AddMicrosoftIdentityWebApiAuthentication在同一个WebAPI端点上支持客户端凭证



我们有几个。. Net 6.0 WebAPI我们已经为Azure B2C配置了身份验证的服务租户。

我们使用AddMicrosoftIdentityWebApiAuthentication配置对授权码授予流的支持或客户端凭据授予流.

两者相互独立,但不能一起工作。

我们希望能够同时支持这两种服务,因为有时我们可能会通过客户端凭据授予流调用守护进程服务。而其他时候,SPA应用程序使用授权码授权流访问相同的webapi.

以下是两者的配置

授权流配置

"AzureADB2C": {
"Instance": "https://{b2ctenantName}.b2clogin.com/",
"TenantId": {tenantId},
"Audience": {webapi clientId}, 
"ClientId": {webapi clientId},  
"Authority": "https://{b2ctenantName}.b2clogin.com/nextwaregroupdev.onmicrosoft.com/B2C_1_sign_up_in/v2.0/" 
},

客户端凭据流配置

"AzureAd": {
"Instance": "https://{b2ctenantName}.b2clogin.com/",
"TenantId": {tenantId},
"Audience": {webapi clientId}, 
"ClientId": {webapi clientId},  
"Domain": "https://{b2ctenantName}.onmicrosoft.com",
"MetadataAddress": "https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration",
"Authority": "https://login.microsoftonline.com/{tenantId}/v2.0"
},

当我们试图包括对两种授权流类型的支持时,如下所示…

Program.cs

// Enable MS Identity Authentication 
builder.Services.AddMicrosoftIdentityWebApiAuthentication(builder.Configuration,"AzureAD");
builder.Services.AddMicrosoftIdentityWebApiAuthentication(builder.Configuration,"AzureADB2C"); 

服务抛出以下异常。

System.InvalidOperationException:Scheme already exists: Bearer

我理解的例外,但我如何能够支持流/授权类型使用AddMicrosoftIdentityWebApiAuthentication服务配置方法?或者有更好的方法来实现这一点?

您只能注册一个名为Bearer的认证方案。默认情况下,AddMicrosoftIdentityWebApiAuthentication调用尝试注册Bearer身份验证方案,但是您可以提供具有单独名称的参数jwtBearerScheme

最新更新