🫡
Flutter❌Microsoft Entraにてandroid アプリからアクセストークンを取得する
概要
Flutter❌Microsoft EntraにてOAuthのフローに則りアクセストークンを取得する実装方法
記事のモチベーション
自分の頭の整理と、Azure系全般的に記事少なめなので同じような事をしようとしている誰かのお役に立てれば。
バージョン情報・利用ライブラリ
flutter: 3.22.1
flutter_appauth: ^6.0.6
1.アプリの登録
以下に則りアプリをEntra上に登録する
2.実装
大きく2箇所実装する必要がある。
1.android/app/build.gradle
android/app/build.gradle
manifestPlaceholders += [appAuthRedirectScheme: "msauth"]
2.Flutter内の処理
final AuthorizationTokenResponse? result = await appAuth.authorizeAndExchangeCode(
AuthorizationTokenRequest(
'CLIENT_ID',
'REDIRECT_URL',
discoveryUrl: 'DISCOVERY_URL',
scopes: SCOPES,
),
各設定項目に関して
意味については現時点での自分の理解ですが、自分自身あまり詳しくないためより詳しくは別記事を参照することをお勧めします。
CLIENT_ID
Azureの登録したアプリの概要画面に記載のCLIENT_IDを利用
CLIENT_IDとは
認可サーバにアクセスするためのクライアントアプリケーションを一意に識別するためのID。
今回だとクライアントアプリケーション = Azureに登録したアプリ。
REDIRECT_URL
Azureの登録したアプリの認証タブ内に記載のREDIRECT_URLを利用
REDIRECT_URLとは
認可サーバが認証情報を返却する先。
DISCOVERY_URL
登録したアプリに記載のエンドポイントを利用
DISCOVERY_URLとは
クライアントアプリケーションが認可サーバの仕様を把握するための情報が提供されているURL。
今回だとクライアントアプリケーション = Azureに登録したアプリ、認可サーバ = Azure。
SCOPES
数種類存在するが、oidc用のスコープなども存在する。ユーザーのプロファイル情報が必要なければopenidで良い。(はず。まだ未確認。)
SCOPESとは
認可サーバがどこまでの情報をクライアントアプリケーションに渡すか定めたもの
今回だとクライアントアプリケーション = Azureに登録したアプリ、認可サーバ = Azure。
Discussion