我已经使用ASP.NET Core 2.1创建了Web API,并且它使用(成功)JWT作为授权请求的方法。
API链接到SQL Server数据库。我的用户使用Identity
作为基本框架存储在其中。
要授权我的API访问权限,请使用用户名和密码,该密码与存储(基于Identity
)的用户进行检查。
成功的登录返回Access Token
(寿命为30分钟)。
首次登录后,将生成Refresh Token
并对身份用户存储并从API发送回。
所有这些都很好。我的下一步是创建一个单独的.NET Core 2.1 MVC网站,该网站消耗API。
我的问题是:
从MVC站点的角度来看,如何根据此安全性确定控制器和视图?我通常会使用
[Authorize]
属性作为身份的一部分。
目前,我在MVC站点方面拥有的只是有关用户的Access Token
(和Refresh token
)。
我正在考虑以下解决方案:
- MVC网站具有自己的数据库和用户的身份验证(使用
Identity
)。 - 与API的连接(凭据/令牌)分别存储在MVC站点数据库中,并用作服务器端的"全局"方式,以执行针对API 的呼叫
您应该使用OpenID Connect和OAuth 2.0框架。请检查IdentityServer4。它还支持ASP.NET核心身份
IdentityServer是一个开放式连接提供商 - 它实现了 OpenID Connect和OAuth 2.0协议。
不同的文献对同一角色使用不同的术语 - 您 可能还可以找到安全令牌服务,身份提供商, 授权服务器,IP-STS等。
,但它们的简而言之完全一样:一块软件 向客户发出安全令牌。
IdentityServer有许多作业和功能 - 包括:
- 保护您的资源
- 使用本地帐户存储或通过外部身份提供商对用户进行身份验证
- 提供会话管理和单一登录
- 管理和身份验证客户
- 向客户发出身份和访问令牌
- 验证令牌