如何针对Postman租户请求Azure AD B2C Access Token
?
我尝试从Azure门户中的Run Now
获取网址并将其放入Auth Url
,但会产生以下错误:
更新
根据克里斯的回答,我现在已经过了上述错误。我已登录但仍无法获取访问令牌:
AADB2C90085:该服务遇到内部错误。请重新进行身份验证,然后重试。 相关ID:45c56d47-4739-465f-8e02-49ba5b3a1b86 时间戳:2017-11-16 15:27:52Z
答案 0 :(得分:10)
使用@Chris Padgett's answer,我能够使用Implicit
授权类型使其工作(无法使用授权代码Gran Type工作)。
拨款类型:Implicit
回调网址:我的B2C应用中定义的任何网址
验证网址:https://login.microsoftonline.com/te/{tenant}/{policy}/oauth2/v2.0/authorize
我的B2C应用中的客户ID:Application ID
范围:https://{tenant}.onmicrosoft.com/{web api app id uri}/{scope name}
客户端身份验证:Either one, it didn't matter
<强>更新强>
微软已经记录了这个过程! Use Postman to get a token and test the API
答案 1 :(得分:4)
2020-05-26更新
Microsoft更改了Azure Active Directory B2C的登录URL,如您所见,here。
因此,@spottedmahn answer必须更新为:
赠款类型:Implicit
回调URL:我的B2C应用中定义的任何URL
验证URL:https://{tenant}.b2clogin.com/te/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize
客户ID:我的B2C应用中的应用ID
范围:https://{tenant}.onmicrosoft.com/{web api app id uri}/{scope name}
客户端身份验证:无论哪种,都没关系
答案 2 :(得分:2)
对于Auth URL字段,您只需输入授权终结点URL而不使用查询字符串参数:
https://login.microsoftonline.com/te/{tenant}/{policy}/oauth2/v2.0/authorize
对于访问令牌网址字段:
https://login.microsoftonline.com/te/{tenant}/{policy}/oauth2/v2.0/token
对于Callback URL字段,您必须输入向Azure AD B2C应用程序注册的回复URL,例如:
https://www.getpostman.com/oauth2/callback
对于Scope字段,输入“openid”以及任何API访问范围。
对于“客户端身份验证”字段,请选择“在正文中发送客户端凭据”。
答案 3 :(得分:0)
我只是想添加一些繁荣信息,因为我最近花了很长时间尝试解决与错误AADB2C90085有关的问题,而这个问题是Google上为数不多的结果之一。
更新
在克里斯回答之后,我现在克服了以上错误。我可以登录,但仍然无法获得访问令牌:
AADB2C90085:服务遇到内部错误。请重新认证,然后重试。相关编号:45c56d47-4739-465f-8e02-49ba5b3a1b86时间戳:2017-11-16 15:27:52Z
并且:
使用@Chris Padgett的答案,我能够使用隐式授予类型(无法通过授权代码粒度类型使它起作用)。
使用授权码流时收到此错误,因为我的 B2C_1A_TokenSigningKeyContainer 和 B2C_1A_TokenEncryptionKeyContainer 错误生成。一旦我按照Get started with custom policies in Azure Active Directory B2C的指南进行操作,该错误就会停止。
链接的相关摘录:
创建签名密钥
- 选择“策略密钥”,然后选择“添加”。
- 对于“选项”,选择“生成”。
- 在“名称”中,输入TokenSigningKeyContainer。前缀B2C_1A_可能会自动添加。
- 对于“密钥类型”,选择“ RSA”。
- 对于“密钥用法”,请选择“签名”。
- 点击创建。
创建加密密钥
- 选择“策略密钥”,然后选择“添加”。
- 对于“选项”,选择“生成”。
- 在“名称”中,输入TokenEncryptionKeyContainer。前缀B2C_1A_可能会自动添加。
- 对于“密钥类型”,选择“ RSA”。
- 对于“密钥用法”,请选择“加密”。
- 点击创建。
答案 4 :(得分:0)
我可以在Postman中获得B2C请求访问令牌,该令牌可用于两种授权类型:grant_type=implicit
和grant_type=authorization_code
。因此,我打开了一个与MS documentation有关的问题:
grant_type=authorization_code"
也可能(请参见说明):https://github.com/aspnet/Docs/issues/10336 以下更改是必要的:
grant_type=implicit
和grant_type=authorization_code
之间的唯一区别是grant_type=authorization_code
需要一些其他参数,如下所示:
访问令牌(访问令牌请求)URL:https://login.microsoftonline.com/“租户名称” .onmicrosoft.com / oauth2 / v2.0 / token?p = B2C_1_“您的注册名称-登录流程”
client_secret:为您的应用程序生成一个密钥:Azure门户-> Azure AD B2C->应用程序->->密钥->生成密钥
答案 5 :(得分:0)
获得这个设置有点头疼。这是我从该线程中的答案拼接在一起的内容,更新后可以利用 Postman 的 Grant Type: Authorization Code (With PKCE)
使用:Azure B2C 租户、JS SPA 前端、Azure Function 后端。
SPA 和后端的设置或多或少如本 MS 文档中所述(小心,某些部分已过时!):https://docs.microsoft.com/en-us/azure/api-management/howto-protect-backend-frontend-azure-ad-b2c
@SPA 应用程序注册 > 身份验证刀片 > 将此值添加到“单页应用程序重定向 URI”
https://oauth.pstmn.io/v1/callback
@ Azure AD B2C |应用注册,点击“端点”(蓝色地球图标@顶部)
记录 Azure AD B2C OAuth 2.0 令牌端点 (v2) 和 Azure AD B2c 2.0 授权端点 (v2)
配置新令牌
代币名称:WhateverYouWant
授权类型:带有 PKCE 的授权码
[ ] 使用浏览器授权(未选中)
身份验证 URL:https://<租户名称>.b2clogin.com/<租户名称>.onmicrosoft.com/<策略名称> /oauth2/v2.0/authorize
访问令牌 URL:https://<租户名称>.b2clogin.com/<租户名称>.onmicrosoft.com/<策略名称>/oauth2/v2.0/token
客户端 ID:< your-SPA-Application-ID-aka-client-ID >
客户端密码:< EMPTY >
代码挑战方法:SHA-256
代码验证器:< EMPTY >
状态:< EMPTY >
范围:类似于<租户名称>.onmicrosoft.com/Hello
客户端身份验证:在正文中发送客户端凭据
点击[清除cookies]和[获取新的访问令牌]