在服务器端Blazor(3.0.0-preview.6)中添加JWT承载身份验证

时间:2019-07-15 21:51:45

标签: asp.net-mvc asp.net-core-mvc blazor asp.net-authentication blazor-server-side

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

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

这很好。

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

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/SignIn修改为/AzureADB2C/Account/SignIn/AzureADB2CJwtBearer,但是得到了相同的结果。 这里的代码建议将方案名称传递给controller方法,这就是我这样做的原因,但仍然是同样的问题。 https://github.com/aspnet/AspNetCore/blob/a784f4575b738ec5b7c6f5cfff2b1fee10de5118/src/Azure/AzureAD/Authentication.AzureADB2C.UI/src/Areas/AzureADB2C/Controllers/AccountController.cs#L26

我了解到Authentication是最近才添加的,并且仍处于试验阶段,查看看起来应该支持JWT的代码,所以我想知道是否丢失了某些东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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=applications