狠狠撸
Submit Search
Thinking the best practice of WebAPI with Azure AD For Xamarin.Forms
?
0 likes
?
2,586 views
Satoru Fujimori
Follow
You should consider about the V2 endpoint or not when using Azure AD.
Read less
Read more
1 of 22
Download now
Download to read offline
More Related Content
Thinking the best practice of WebAPI with Azure AD For Xamarin.Forms
1.
Xamarin.Forms で Azure
AD 認証付きの WebAPI のベストプラクティスを考える 2019/12/9 JXUGC #26 平?エディション Satoru Fujimori / @masatoru 2019/12/9 JXUGC #26 平?エディション
2.
About Me 藤森 智
@masatoru 株式会社ケイ?ジェイ?システムズ代表 Azure / Xamarin / C# の開発、ほぼ .Net な毎? おでんはじめました(Blog): http://masatoru.hatenadiary.jp/ 最近ヨガ と React Native にハマり中 2019/12/9 JXUGC #26 平?エディション
3.
実現したいこと 2019/12/9 JXUGC #26
平?エディション
4.
検討する項? Xamarin.Forms の認証で使?するライブラリ App Center
Auth MSAL.NET or ADAL.NET App Service へ認証を実装する Easy Auth( App Service → 認証/承認 ) バックエンド( ASP.NET Core ) に認証を実装する できるだけコードを書かずに実装したい 2019/12/9 JXUGC #26 平?エディション
5.
Mobile Apps SDK(というのが昔あった) 機能 オフライン同期 Azure
AD 認証(+ App Service Easy Auth) プッシュ通知 SDK Xamarin.Forms .NET バックエンド → 「これからは App Center を使?してください」(という通達) 2019/12/9 JXUGC #26 平?エディション
6.
Case1: App Center
Auth 2019/12/9 JXUGC #26 平?エディション
7.
App Center Auth
のメリット / デメリット Azure AD B2C のみ対応 Azure AD 対応予定(ロードマップ) Easy Auth の詳細モードを使?すると Azure AD と B2C を接続可能 Xamarin 側の認証の実装はとても簡単(たった1?!!) var userInfo = await Auth.SignInAsync(); var accessToken = userInfo.AccessToken; トークンをリフレッシュする仕組みがない? → 認証の遷移画?のハンドリングがよくわからず断念 → Xamarin 側のライブラリは MSAL.NET の?択に絞られる 2019/12/9 JXUGC #26 平?エディション
8.
MSAL で認証の画?遷移を実装する キャッシュがあれば使?する、なければ画?遷移するという書き? public static
async Task<string> TryLogin() { AuthenticationResult authResult = null; IEnumerable<IAccount> accounts = await App.PCA.GetAccountsAsync(); try{ IAccount firstAccount = accounts.FirstOrDefault(); // キャッシュがあれば使?する、賞味期限も?動的に更新される authResult = await App.PCA.AcquireTokenSilent("User.Read", firstAccount) .ExecuteAsync(); }catch (MsalUiRequiredException ex){ try{ // キャッシュがなければ認証画?を表?する authResult = await App.PCA.AcquireTokenInteractive(App.Scopes) .WithParentActivityOrWindow(App.ParentWindow) .ExecuteAsync(); }catch (Exception ex2){} } return authResult?.AccessToken ?? ""; } 2019/12/9 JXUGC #26 平?エディション
9.
取得したアクセストークンを使って検証する jwt.ms などでトークンの中?を調べる エンドポイントやスコープを確認する POSTMAN などで
WebAPI を叩いてみる 他にも .auth/me でアクセストークンや ID トークンを取得することが できる 2019/12/9 JXUGC #26 平?エディション
10.
アクセストークンと ID トークン WebAPI
をたたくのに使?するのはどっち? アクセストークン: Web APIを認証/認可サーバで保護して他のアプ リケーションに公開する場合 IDトークン: Web APIを?分のアプリケーションの?部(バックエン ドサービス)として作成して保護する場合 参考) OAuth 2.0/OpenID Connectの2つのトークンの使いみち 2019/12/9 JXUGC #26 平?エディション
11.
Case2: MSAL と
Easy Auth(App Service) 2019/12/9 JXUGC #26 平?エディション
12.
Easy Auth は
MSAL に対応していない(と公式 に書いてある) Easy Auth とは App Service の設定で Azure AD の認証を組み込むことができる バックエンドに実装が不要? MSAL(Azure AD V2 エンドポイント)には対応していない 現時点では、Azure App Service と Azure Functions は Azure AD v1.0 でのみサポートされています。 Microsoft Authentication Libraries (MSAL) が含まれる Microsoft ID プラットフォーム v2.0 ではサポート されていません。 2019/12/9 JXUGC #26 平?エディション
13.
Azure AD のエンドポイント Azure
AD 開発者プラットフォーム( V1 エンドポイント) 職場または学校のアカウント Azure AD 認証ライブラリ (ADAL) Easy Auth は V1 エンドポイントのみ対応 Microsoft ID プラットフォーム v2.0(Azure AD V2 エンドポイント) 職場または学校のアカウント+個?アカウントやソーシャルアカ ウント(B2C) Microsoft Authentication Library (MSAL) 2019/12/9 JXUGC #26 平?エディション
14.
Case3: MSAL と
Microsoft.Identity.Web フォ ルダを使?しての実装 2019/12/9 JXUGC #26 平?エディション
15.
Microsoft.Identity.Web とは GitHub 上にある(公式の?)サンプル Azure-Samples/active-directory-dotnet-native-aspnetcore-v2 Microsoft.Identity.Web
フォルダ( 30 ファイル以上)をコピーして バックエンド( ASP.NET Core )に実装する public void ConfigureServices(IServiceCollection services) { services.AddProtectedWebApi(Configuration); ... → (このサンプル以外)MSAL と Azure AD V2 の公式の?法はない 2019/12/9 JXUGC #26 平?エディション
16.
これがオレの(2週間の苦悩で得た) ベストプラクティスだ?(微妙...) 2019/12/9 JXUGC #26
平?エディション
17.
という話を しばやん(@shibayan)にしたところ、 2019/12/9 JXUGC #26
平?エディション
18.
「ちょっと Chris に聞いてみる」 2019/12/9
JXUGC #26 平?エディション
19.
Case4: EasyAuth は
Azure AD V2 エンドポイン トに対応している(ぽい 2019/12/9 JXUGC #26 平?エディション
20.
MSAL と EasyAuth
の組み合わせのポイントと 注意点 EasyAuth の「発?者 URL 」で以下を設定(公式ドキュメントに掲載無 し) https://login.microsoftonline.com/{テナントID}/v2.0/.well- known/openid-configuration 現状は、アクセストークンは V1 エンドポイント、ID トークンは V2 エ ンドポイントなので注意(バグか仕様かは不明) ※Azure AD にスコープを追加することで V2 エンドポイントを追加す ることができる 2019/12/9 JXUGC #26 平?エディション
21.
まとめ 公式ドキュメントを時には疑う(無理 すごい?に相談すると公式以上の回答が返ってきて唖然とすることが ある 持つべきものは?脈 Azure AD
はエンドポイントに気を付ける必要がある App Center Auth も EasyAuth も過渡期なので今後の動向に注? 認証( 401 Unauthorized )は怖くない 2019/12/9 JXUGC #26 平?エディション
22.
ご清聴ありがとうございました 2019/12/9 JXUGC #26
平?エディション
Download