我有一個Web API試圖爲B2C用戶獲取一組訪問和刷新令牌。用戶登錄通過配置的「社交身份提供商」完成。Azure AD B2C在令牌請求中返回AADSTS70000錯誤
API接收授權碼。在交換令牌代碼時,Azure AD B2C租戶的端點端點返回invalid_grant
錯誤。
我查看了我在網站上找到的其他答案。問題依然存在。指針非常感謝。
詳情如下。
的註冊和登錄型材問題索賠
- 給定的名稱
- 電子郵件
- 身份提供商
- 對象ID
從令牌端點錯誤:
{
"error": "invalid_grant",
"error_description": "AADSTS70000: Transmission data parser failure: Authorization Code is malformed or invalid. [...]",
"error_codes": [
70000
],
[...]
}
授權請求看起來如下:
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>'
在用戶授權,授權碼是POST
ED通過API令牌端點。 Payload被表示爲一個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)
看起來問題是應該是'https://login.microsoftonline.com/te/ .onmicrosoft.com//oauth2/v2.0/token'的令牌端點URL。除了一些提及'https://login.microsoftonline.com/tfp/ ...'外,我在B2C文檔中找不到任何這方面的參考資料。這是最近的變化嗎? –
MrBink
這很奇怪,我會與B2C團隊簽到。 –
有三種方法可以定位Azure AD B2C: 1.使用您使用的URL(在路徑中沒有te或tfp)並指定策略作爲查詢參數(p = policyName) 2.沿着路徑使用te與b2c政策名稱 3.在路徑中使用tfp以及b2c策略名稱 – Parakh