我们有几个。. 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
。