我想将一个过时的项目带到近代,但我不确定如何实现。
我有一个Web应用程序,该应用程序使用cookie身份验证以及在其之上构建的一些东西。它从外部身份验证提供程序X获取令牌,因此X/login
这样的端点显示了登录表单,并在查询参数中使用令牌进行了回调。我在查询参数中向令牌发送的X/verify
,如果令牌合法,它将返回声明。
登录流程如下:
X/login
,因为没有cookie出现ClaimsPrincipal
httpContext.SignInAsync(scheme, principal)
)我想将其更改为Bearer Token auth,并分别拥有客户端应用程序和API,因此客户端应用程序将重定向到Auth提供程序,获取令牌作为回调,并使用它来验证对API的请求,API会使用身份验证提供者。
虽然获取令牌非常简单,但我不确定如何设置API以使用Bearer令牌并进行验证。起初,我只是想将身份验证方案从cookie更改为auth,这已经足够了,但是我很快了解到httpContext.SignInAsync()
不能与Jwt承载者身份验证方案一起使用,现在我有点迷失了。同时,它看起来相当简单(只需两个简单的端点即可获取令牌并对其进行验证),但与此同时,在如何使用现有的asp.net基础结构来处理其他所有事情方面,它也令人困惑。
编辑:我可以将全局中间件添加到API中以检查访问令牌并针对每个请求手动进行验证,但这听起来并不是一个很好的解决方案,因为A)对于API的每个正常请求,每个1个附加请求仅用于验证令牌。 B)没有ClaimsPrincipal可以访问电子邮件等用户数据。现在很好,因为我不想访问该数据,但仍然如此。