繁体   English   中英

如何使用Azure AD B2C添加基本访问认证?

[英]How to add basic access authentication using Azure AD B2C?

我正在尝试配置 Azure B2C,以便用户可以通过 OpenID 连接提供商注册/登录。 我正在使用自定义策略。 我有客户端 ID 和客户端密码,它们是有效的,我使用 Postman 测试了它们,并且在使用 Postman 时获得了访问令牌。

但是,当我尝试通过 B2C(使用 OpenId 连接提供商)登录时,我总是会收到以下错误:

使用方法“POST”向 URL“{token endpoint}”发出请求时捕获异常。 异常状态代码为“未授权”。

我发现,身份提供者在调用令牌端点时需要基本访问身份验证。 因此,当 B2C 向令牌端点发出请求时,它需要具有以下格式的请求 header:

授权:基本{client_id:client_secret的base64编码}

是否有可能以某种方式让 B2C 使用基本身份验证,因此在向令牌端点 URL 发出请求时添加授权 header?

更新:

我有一个 B2C 租户,我使用自定义策略添加了一个 OpenID Connect 提供商作为 claimsprovider。 我想使用 OpenID Connect 提供商在目录中创建一个帐户,例如 Facebook。 我希望能够使用通过该提供商提供的帐户注册/登录我的应用程序。 问题是 OpenID Connect 提供商在注册过程中需要令牌时需要 http 基本身份验证。 使用 Postman,此协议手动工作正常。

我是否需要使用 REST 类型的技术配置文件手动实现 B2C 和第三方 IDP 之间的授权码授予流程?

在自定义策略中的 OpenIdConnect 身份提供者的元数据中指定 client_secret_basic。 这本质上是基本身份验证:

<Item Key="DiscoverMetadataByTokenIssuer">false</Item>
<Item Key="token_endpoint_auth_method">client_secret_basic</Item>

https://learn.microsoft.com/en-us/azure/active-directory-b2c/openid-connect-technical-profile

Azure AD B2C 发送一个 HTTP 请求,其中包含授权 header 中的客户端凭据。凭据的格式为 base64 编码字符串“名称:密码”。

要使 HTTP 基本身份验证正常工作,您需要遵循以下文档

https://learn.microsoft.com/en-us/azure/api-management/api-management-access-restriction-policies#CheckHTTPHeader

https://learn.microsoft.com/en-us/azure/active-directory-b2c/secure-rest-api#step-4-change-the-technical-profile-to-support-basic-authentication-in-你的扩展策略

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM