.NET5构建IdentityServer4.x配置认证中心服务(一)

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

关于授权认证当下比较流行的框架非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 版本

  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; }

        
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值