【发布时间】:2019-11-24 14:53:59
【问题描述】:
我正在尝试使用 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/SignIn 修改为/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 的代码,所以我想知道我是否遗漏了一些东西。非常感谢任何帮助。
【问题讨论】:
-
你能解决这个问题吗?我在尝试获取访问令牌以供用户代表调用 webapi 时遇到同样的问题。
-
否,仍然使用默认的 Cookie 身份验证。我相信添加 JWT 可以通过将其传递给 signalR
accessTokenFactory到 blazor Hub 来完成。服务器端应该能够正确验证它。至少这是我首先要尝试的。 -
您有机会分享对您有用的代码吗?我根本没有让它工作。需要从 B2C 获取 id/访问令牌,但我没有尝试过。
-
老实说,我只是在 VS 中使用了带有身份验证的默认模板项目,并将值替换为我的 B2C 租户。
标签: asp.net-mvc asp.net-core-mvc blazor asp.net-authentication blazor-server-side