私は、B2Cユーザーのアクセストークンと更新トークンを取得しようとしているWeb APIを持っています。ユーザーサインインは、構成済みの「ソーシャルIDプロバイダ」を介して実行されます。Azure AD B2CがトークンリクエストでAADSTS70000エラーを返します
APIは認証コードを受け取ります。トークンのコードを交換するとき、Azure AD B2Cテナントのエンドポイントエンドポイントはinvalid_grant
エラーを返します。
私はサイトで見つけた他の回答を見てきました。まだ問題は残っています。ポインタは非常に感謝しています。
詳細は次のとおりです。
サインアップとサインでプロファイル名
エラーを考える
- の発行の請求: を
{ "error": "invalid_grant", "error_description": "AADSTS70000: Transmission data parser failure: Authorization Code is malformed or invalid. [...]", "error_codes": [ 70000 ], [...] }
次のようにAuthorizationリクエストに見える:ユーザー認証、認可コード際
AUTHORIZATION_ENDPOINT = 'https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/authorize' authorization_url = f'{AUTHORIZATION_ENDPOINT}' \ f'?client_id={CLIENT_ID}' \ f'&response_type=code' \ f'&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcode' \ f'&scope=openid offline_access' \ f'&nonce=hellobob' \ f'&p=B2C_1_<profile>'
は、エンドポイントをトークンにAPIによって
POST
編です。ペイロードはPython辞書として表されます。TOKEN_ENDPOINT = 'https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token' payload = { 'p': 'B2C_1_<profile>', 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'code': code, 'grant_type': 'authorization_code', 'redirect_uri': 'http://localhost:8000/code', 'scope': 'openid offline_access' } response = requests.post(TOKEN_ENDPOINT, data=payload)
トークンのエンドポイントURLは、https://login.microsoftonline.com/te/ .onmicrosoft.com//oauth2/v2.0/token'だったはずです。 'https://login.microsoftonline.com/tfp/ ... 'という言葉を除いて、私はB2Cのドキュメントでこれを参照することはできません。これは最近の変更ですか? –
MrBink
それは奇妙なことですが、私はB2Cチームにチェックインします。 –
Azure AD B2Cをターゲットにするには、次の3つの方法があります。 1.使用したURLを使用して(パスにteまたはtfpを付けずに)、ポリシーをクエリパラメータとして指定します(p = policyName) 2. path b2cポリシー名 3.パスのtfpをb2cポリシー名と共に使用する – Parakh