小编Hen*_*rck的帖子

JWT 不记名令牌不适用于 ASP.Net Core 3.1 + Identity Server 4

我目前正在尝试为我正在开发的移动应用程序创建一个 web api。我决定使用 ASP.Net Core 3.1 和包含的 Indentity Server 来使用 OpenID Connect + PKCE 进行身份验证。用户将通过 WebView 授权应用程序,访问令牌将用于对 api 的后续调用。api 的 Controllers 用[Authorize]Attribute修饰。

我尝试使用一些脚手架代码进行身份验证,但现在我很挣扎,因为 jwt 令牌在某些情况下似乎无法识别。

在脚手架代码中,ConfigureServices启动类中的方法调用了services.AddDefaultIdentity<ApplicationUser>(). 问题是,这还添加了所有我不需要/不想要的 Identity 的默认端点(/Account/Manage/Disable2fa、/Account/Manage/PersonalData 等)。因此,我更改为代码services.AddIdentity<ApplicationUser, IdentityRole>(),因为我现在阅读了多次,AddDefaultIdentity()显然与AddIdentity()调用相同但也调用.AddDefaultUI()

在测试登录流程后,事实证明 api 控制器Authorization: Bearer ...在进行更改后不再接受Header,并且 api 调用总是被重定向到登录页面,就好像用户没有登录一样

当我将代码改回 AddDefaultIdentity 时,JWT Bearer Token 再次正确验证,我可以使用 [Authorize] 属性访问控制器,但随后我再次遇到了默认身份页面的问题......

我的问题是:如何使用 [Authorize] Arribute 和 JWT Bearer Header 保护我的 API 控制器,而不必包含默认的身份 UI?

启动文件

using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net jwt asp.net-identity

4
推荐指数
1
解决办法
1893
查看次数

标签 统计

.net ×1

asp.net ×1

asp.net-identity ×1

c# ×1

jwt ×1