我对AD B2C还是很陌生,并且在使用AD Graph API时遇到了麻烦。
我的目标是列出所有注册到我的广告的用户。我只想通过HTTP请求执行此操作。
到目前为止,我发现我必须使用此端点:
https://graph.windows.net/my_tenant.onmicrosoft.com/users?api-version=1.6
我的问题是我找不到在Authorization
标头中使用的令牌。
目前,我正在通过以下URL进行身份验证:
https://my_tenant.b2clogin.com/my_tenant.onmicrosoft.com/oauth2/v2.0/authorize?
client_id=27fb84fe-4baf-4b6b-bfe7-f2d0638f2790
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost
&response_mode=query
&scope=27fb84fe-4baf-4b6b-bfe7-f2d0638f2790%20offline_access
&state=data
&p=B2C_1_SignUporSignIn
我通过redirect_uri获得了一个代码,然后将该代码发送回此端点以获得令牌:
https://my_tenant.b2clogin.com/my_tenant.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_signuporsignin
在这里的文档之后:https://docs.microsoft.com/fr-fr/azure/active-directory-b2c/active-directory-b2c-access-tokens,我发送这些参数:
grant_type:authorization_code
client_secret:my_secret
client_id:27fb84fe-4baf-4b6b-bfe7-f2d0638f2790
scope:openid
code:code
问题是我没有得到像文档中所示的回复。我只得到id_token
,token_type
,not_before
,id_token_expires_in
,profile_info
。但是,id_token
似乎与文档中的access_token
相对应。
问题是,是否必须在Authorization标头中使用此令牌才能将请求发送到AD Graph API?
由于我使用此令牌,因此出现以下错误:Authentication_ExpiredToken
-您的访问令牌已过期。请在提交请求之前将其续订。
预先感谢您的帮助
答案 0 :(得分:1)
在授权标头中使用此令牌将请求发送到AD Graph API是必需的吗?
是的,对于来自Azure Ad Graph
或Microsoft Graph API
的每个资源访问请求,您都需要传递收到的令牌。
您的错误原因:Authentication_ExpiredToken-您的访问令牌已过期。在提交请求之前,请先续签:
我已经测试并成功重现了您遇到的错误。查看屏幕截图:
可能的原因:
您的令牌请求端点可能是错误的,或者您已收到令牌
一个租户并尝试访问其他租户资源。确保令牌端点是https://login.microsoftonline.com/YourB2CTenant.onmicrosoft.com/oauth2/token
检查您的资源:应该为https://graph.windows.net/
令牌请求格式:
Request Endpoint URL:
https://login.microsoftonline.com/YourTenantName.onmicrosoft.com/oauth2/token
请求正文
grant_type:client_credentials
client_id:AppId
client_secret:AppSecret
resource:https://graph.windows.net/
请参见下面的屏幕截图:
B2C用户访问格式:
用户列表请求网址:
https://graph.windows.net/YourTenantName.onmicrosoft.com/users?api-version=1.6
查看屏幕截图:
记住点:
在这种情况下,您可能会遇到Insufficient privilege error 401
,只需分配以下权限即可。
权限来自: Windows Azure Active Directory
权限名称: Read all users' full profiles
权限类型: DELEGATED PERMISSIONS
查看屏幕截图:
通过这种方式,您可以获得天蓝色的B2C令牌,并使用该令牌访问用户列表。