Azure MobileApp に Azure AD B2C のアカウントでサインインしてデータ同期する
Azure MobileApp に Azure AD B2C のアカウントでサインインしてデータ同期する
今回は前に取り上げた Azure B2C によるユーザ管理の外出しと同じく取り上げた Azure MobileApp によるユーザ個別データ管理の合わせ技、Azure B2C アカウントごとのユーザ個別データの同期方法についてまとめます。
モバイルアプリ側に AzureB2C サインイン機能を追加
Xamarin.Forms のAzureB2Cサインイン実装方法に関しては 公式ドキュメント を参照。
重要なのは、MobileServiceClient.LoginAsync() に AzureB2C から取得したアクセストークンを渡すとログイン画面を出さず、渡したトークンを使ってアクセスしてくれる事です。
MSALで取得したトークンを使いまわす事ができるので、MSALでログインした後 MobileApp へのログインでもう一度ログイン画面を出す~ というような事は必要ありません。
public async Task<bool> LoginAsync(string accessToken) {
var payload = new JObject();
payload["access_token"] = accessToken;
var User = await CurrentClient.LoginAsync(
MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,
payload);
return true;
}
記事の最後にクイックスタートのTodoアプリの認証をB2Cログインに変更したもののソースを貼っておきます。
サーバ側変更
MobileApp の "認証/承認" で Azure Active Directory の認証プロバイダーを設定します。同じサブスクリプション上の Azure AD に登録されたアプリなら"簡易"から設定できますが、Azure B2C のアプリは対応していないので、"詳細"でクライアントIDと発行者URLを設定する事になります。
"詳細"での設定項目は上画像の通り。
クライアントID - Azure B2C に登録したアプリのアプリケーションIDです。クライアントIDとアプリケーションIDは用語が統一されていなくて気持ち悪いですね。
発行者のURL - 発行者のURLです。書式ですが、"https://login.microsoftonline.com/tfp/{テナントID(xxxx.onmicrosoft.com)}/{サインイン用ポリシー名}/v2.0/.well-known/openid-configuration" と入れるのが正しいみたいです。
あと今回はネイティブアプリからのサインインになるので、AzureB2C側に登録したアプリケーションの"ネイティブ クライアントを含める"もONにしておきましょう。
リソース
Author And Source
この問題について(Azure MobileApp に Azure AD B2C のアカウントでサインインしてデータ同期する), 我々は、より多くの情報をここで見つけました https://qiita.com/yossy6954/items/1f7cac8783692a1dd71a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .