关于授权认证当下比较流行的框架非IdentityServer莫属,最近抽空学习了下,IdentityServer4是基于openid+auth2.0基础实现的一整套完善的授权中心
相信auth2.0的授权协议相信大家都有了解,不懂的可以参考博客园大佬的文章,讲解的比较详细
阮一峰auth2.0博客
auth2.0仅仅是提供授权认证服务,仅仅提供访问Token,但是如果需要得到授权者的相关用户信息,则需要再次调用UserInfo接口才可以实现,故而OpenID Connect应运而生,它会额外提供Id Token提供用户身份信息,可以少调用一次UserInfo接口(这样是不是很香),大家又会问OpenID Connect是什么东西,其实大家只要搞明白两点就可以了
1. OAuth 2.0是有关如何颁发访问令牌的规范,提供Access Token用于访问服务接口的
2. OpenID Connect是有关如何发行ID令牌的规范,提供Id Token用于用户身份标识,Id Token是基于JWT格式
今天给大家在.NET5环境下构建授权中心,首先需要安装
Microsoft Visual Studio Enterprise 2019
版本 16.8.1
Nuete引用 IdentityServer4.1.1 版本
- 首先搭建IdentityServer授权服务中心
最初了解IdentityServer之前不知道有这个区别,是看到网上有人介绍后,今天特别强调一下
由于IdentityServer4的4.x版本,跟老版本的稍微有些差别:
4.x版本的ApiScope和ApiResource是分开配置的,然后在ApiResource中一定要添加Scopes。如果你在网上搜的IdentityServer4博客论文可能比较老,都是没有介绍ApiScope的代码,老版本默认ApiResource的Name作为Scope。
老版本代码类似这样:
public static IEnumerable<ApiResource> ApiResources =>
new ApiResource[]
{
new ApiResource("api1","第一个api"), // 老版本此处默认将api1作为scope了
};
public static IEnumerable<Client> Clients =>
new Client[]
{
new Client
{
......
AllowedScopes = {
"api1" }
},
};
以上代码访问http://localhost:5000/connect/token接口会提示 “Invalid scopes”
## 正确配置做法如下:
IdentityServer4新版本已经将ApiScope和ApiResource分开配置,最终代码如下
项目结构

Startup.cs文件新增代码
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration {
get; }

本文介绍了如何使用IdentityServer4在.NET5环境中构建授权中心。详细讲述了IdentityServer4新版本的特性,包括ApiScope和ApiResource的配置方法,以及如何通过不同授权模式获取AccessToken。
最低0.47元/天 解锁文章
7549

被折叠的 条评论
为什么被折叠?



