我可以使用证书对 Azure B2C 策略中的 Rest API 进行身份验证吗?

问题描述 投票:0回答:1

我正在尝试调用 B2C 技术配置文件中的 Rest API。此处描述:https://learn.microsoft.com/en-us/azure/active-directory-b2c/restful-technical-profile

Rest API 受 Azure AD 保护,我需要先从 Azure AD 获取不记名令牌,然后使用技术简介中的

Bearer
Authentication Type
来访问 Rest API。

我想使用证书而不是密钥从 Azure AD 获取不记名令牌。为此,我必须创建一个由证书签名的JWT Assertion。该过程如下所述:https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow#second-case-access-token-request -有证书

我就明白这么多了。我不确定的是,B2C 是否具有我可以构建和签署 JWT 断言以在对 Azure AD 的请求中使用的功能?我查看了可用的声明转换,但没有发现任何内容。我是否被迫使用客户端 ID 和密钥?

azure-active-directory azure-ad-b2c
1个回答
0
投票

注意,要生成带证书的 JWT 令牌,您必须创建一个

self-signed certificate
,如下所示:

New-SelfSignedCertificate 
    -KeyExportPolicy Exportable 
    -Subject "CN=yourappname.yourtenant.onmicrosoft.com" 
    -KeyAlgorithm RSA 
    -KeyLength 2048 
    -KeyUsage DigitalSignature 
    -NotAfter (Get-Date).AddMonths(12) 
    -CertStoreLocation "Cert:\CurrentUser\My"

enter image description here

在 Windows 计算机上,选择 管理用户证书 并下载证书:

enter image description here

注意,需要

client_id
来验证Azure Ad b2c。

要上传证书,请转到 Azure Ad b2c 并选择 API 连接器并上传证书并为其创建密码,如下所示:

enter image description here

确保按照此 MsDoc 将 REST API 配置文件配置为使用 HTTP 基本身份验证。

要生成没有

client_secret
的令牌,请尝试以下参数:

enter image description here

并尝试生成令牌,如果您想以编程方式执行此操作,请更新您的 appsettings 文件,如下所示:

"B2CTenant": "Tenant_ID",
"B2CPolicy": "Policy_name",
"B2CClientId": "client_id",
"B2CRedirectUri": "redirecturi",
"B2CSignUpUrl": "Signup_url",
"SigningCertAlgorithm": "RS256",
"SigningCertThumbprint": "Thumbprint",
"LinkExpiresAfterMinutes": 10

参考:

在 Azure AD B2C 中用作 API 连接器的安全 API - Azure AD B2C

© www.soinside.com 2019 - 2024. All rights reserved.