请求Azure AD B2C的邮递员访问令牌

时间:2017-11-13 23:11:52

标签: postman azure-ad-b2c

如何针对Postman租户请求Azure AD B2C Access Token

new access token screenshot

我尝试从Azure门户中的Run Now获取网址并将其放入Auth Url,但会产生以下错误:

b2c error

更新

根据克里斯的回答,我现在已经过了上述错误。我已登录但仍无法获取访问令牌:

  

AADB2C90085:该服务遇到内部错误。请重新进行身份验证,然后重试。    相关ID:45c56d47-4739-465f-8e02-49ba5b3a1b86    时间戳:2017-11-16 15:27:52Z

6 个答案:

答案 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的指南进行操作,该错误就会停止。

链接的相关摘录:

  

创建签名密钥

     
      
  1. 选择“策略密钥”,然后选择“添加”。
  2.   
  3. 对于“选项”,选择“生成”。
  4.   
  5. 在“名称”中,输入TokenSigningKeyContainer。前缀B2C_1A_可能会自动添加。
  6.   
  7. 对于“密钥类型”,选择“ RSA”。
  8.   
  9. 对于“密钥用法”,请选择“签名”。
  10.   
  11. 点击创建。
  12.   
     

创建加密密钥

     
      
  1. 选择“策略密钥”,然后选择“添加”。
  2.   
  3. 对于“选项”,选择“生成”。
  4.   
  5. 在“名称”中,输入TokenEncryptionKeyContainer。前缀B2C_1A_可能会自动添加。
  6.   
  7. 对于“密钥类型”,选择“ RSA”。
  8.   
  9. 对于“密钥用法”,请选择“加密”。
  10.   
  11. 点击创建。
  12.   

答案 4 :(得分:0)

我可以在Postman中获得B2C请求访问令牌,该令牌可用于两种授权类型:grant_type=implicitgrant_type=authorization_code。因此,我打开了一个与MS documentation有关的问题:

以下更改是必要的:

grant_type=implicitgrant_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)

起点也将归功于 https://blogs.aaddevsup.xyz/2020/08/performing-azure-ad-oauth2-authorization-code-grant-flow-with-pkce-in-postman/

使用:Azure B2C 租户、JS SPA 前端、Azure Function 后端。

Azure 门户 (Azure AD B2C)

  • 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)

邮递员

  • 授权:Oauth 2.0
  • 将身份验证数据添加到:请求标头

配置新令牌

  • 代币名称:WhateverYouWant

  • 授权类型:带有 PKCE 的授权码

  • 回调网址:https://oauth.pstmn.io/v1/callback

  • [ ] 使用浏览器授权(未选中)

  • 身份验证 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]和[获取新的访问令牌]