1

我正在尝试使用 Azure B2C 添加 JWT Bearer 身份验证。我正在使用默认项目模板来创建具有身份验证的 Blazor 服务器端应用程序。我在创建页面选择了 B2C 身份验证,它设置了默认身份验证使用

services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
    .AddAzureADB2C(o => Configuration.Bind("AzureAdB2C", o));

这很好用。

我正在尝试添加 JWT Bearer 身份验证。这是我正在使用的代码:

services.AddAuthentication(AzureADB2CDefaults.JwtBearerAuthenticationScheme)
    .AddAzureADB2CBearer(o => Configuration.Bind("AzureAdB2C", o));

此外,我添加"ClientId": "my_client_id"到配置部分,因为它是该方案所必需的,这里的代码指出它在使用此方案时使用 https://github.com/aspnet/AspNetCore/blob/a784f4575b738ec5b7c6f5cfff2b1fee10de5118/src/Azure/AzureAD/Authentication.AzureADB2C .UI/src/AzureADB2CJwtBearerOptionsConfiguration.cs#L32

但是,尝试登录时出现错误Sorry, there's nothing at this address.

这表明内置控制器没有受到打击(下面的链接)。

我也尝试将登录链接从/AzureADB2C/Account/SignInto修改/AzureADB2C/Account/SignIn/AzureADB2CJwtBearer,但得到了相同的结果。这里的代码建议方案名称应该传递给控制器​​方法,这就是我这样做的原因,但仍然是同样的问题。 https://github.com/aspnet/AspNetCore/blob/a784f4575b738ec5b7c6f5cfff2b1fee10de5118/src/Azure/AzureAD/Authentication.AzureADB2C.UI/src/Areas/AzureADB2C/Controllers/AccountController.cs#L26

我知道最近才添加了身份验证,这仍然是实验性的,并且查看看起来应该支持 JWT 的代码,所以我想知道我是否遗漏了一些东西。任何帮助是极大的赞赏。

4

1 回答 1

0

是的,对于带有 AAD B2C 的服务器端 blazor.net,您可以简单地使用服务器端 blazor 的项目创建模板并进行两项更改以指向您的 AAD B2C 身份提供程序,而不是 Azure Active Directory (AAD) 一个由模板创建。

更改1: appsettings.json,将AzureAd替换成这样:

"AzureAdB2C": {
"Instance": "https://myaadb2ctenantname.b2clogin.com/tfp/",
"ClientId": "a4444-83b0-4752-4444-33d7a7323457",
"CallbackPath": "/signin-oidc",
"Domain": "myaadb2ctenantname.onmicrosoft.com",
"SignUpSignInPolicyId": "B2C_1_MySignInV2Policy",
"ResetPasswordPolicyId": "B2C_1_V2SSPR",
"EditProfilePolicyId": "B2C_1_V2SiPe"

},

更改 2:在 Startup.cs 中,将 AzureAd 的 services.AddAuthentication 行替换为:

            services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
            .AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));

假设您已根据此处显示的最佳实践设置了 AAD B2C,则这些是唯一需要的更改:https ://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-tutorials -web-app?tabs=应用程序

于 2019-12-14T15:44:51.263 回答