ASP.NET Core中IdentityServer4如何实现Token令牌身份认证(asp.net core,identityserver4,token,编程语言)

时间:2024-05-05 23:24:10 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

二、什么是IdentityServer4

IdentityServer4 是一个免费的开源 OpenID Connect 和 OAuth 2.0 身份认证与授权框架,适用于 ASP.NET Core 平台,IdentityServer4 由 Dominick Baier 和 Brock Allen 两位大神创建和维护,您可以快捷的在应用程序中集成基于令牌的身份验证,单点登录和 API 访问控制,支持非常多的协议实现和可扩展点,IdentityServer4 由 OpenID 基金会正式认证,因此符合规范且可互操作,被微软作为 .NET 基金会项目的一部分,并根据其行为准则运行。

IdentityServer4是用于ASP.NET Core的OpenID Connect和OAuth 2.0框架。

将IdentityServer4部署到您的应用中具备如下特点:

1)、用户认证服务

  基于OpenID Connect实现的独立的认证服务实现对多平台(web, native, mobile, services)的集中认证

2)、API访问授权

  为各种类型的客户机颁发api访问令牌,例如服务器到服务器、web应用程序、spa和native/mobile程序

3)、联合身份认证

  支持外部身份提供者,如Azure Active Directory、Google、Facebook等

4)、定制化的实现

  IdentityServer4的许多方面可以定制以满足您的需要,因为它是一个框架,而不是SaaS服务,所以可以通过编写代码来调整实现,以适应不同的场景

5)、熟的开源方案

使用许可的Apache2开源协议,允许在其之上构建商业产品,也作为.NET基金会支持的项目 (https://dotnetfoundation.org/projects?type=project&ps=10&pn=6)

6)、提供免费的商业支持

  官方可以对使用者提供部分的免费商业支持

OpenId Connect用于认证(authentication),OAuth3.0用于授权(authorization)。

IdentityServer4就是这样一个框架,IdentityServer4是为ASP.NET CORE量身定制的实现了OpenId Connect和OAuth3.0协议的认证授权中间件。

举个例子来解释认证和授权:
你要登机,你需要出示你的身份证和机票,身份证是为了证明你张三确实是你张三,这就是认证( authentication );而机票是为了证明你张三确实买了票可以上飞机,这就是授权( authorization )。


ASP.NET Core中IdentityServer4如何实现Token令牌身份认证

ASP.NET Core WebAPI基于IdentityServer4实现Token令牌身份验证

三、ASP.NET Core WebAPI基于IdentityServer4实现Token令牌身份认证原理讲解

IdentityServer4是一个框架,IdentityServer4是为ASP.NET CORE量身定制的实现了OpenId Connect和OAuth3.0协议的认证授权中间件。

OAuth3.0四种模式:

1、授权码模式(authorization code)(支持refresh token—正宗的oauth3的授权模式)

2、简化模式(implicit)(不支持refresh token—为web浏览器应用设计)

3、密码模式(resource owner password credentials)(支持refresh token为前后分离单页应用设计)

4、客户端模式(client credentials)(不支持refresh token—(为纯后台api服务消费者设计))

这种模式直接根据client的id和密钥即可获取token,无需用户参与这种模式比较合适消费api的后端服务,比如拉取一组用户信息等不支持refresh token,主要是没有必要。

接下来我们使用客户端模式来实现一个IdentityServer4授权。

1、客户端直接用自身的信息向授权服务器请求token。

2、授权服务器验证信息后返回token。

其实IdentityServer4 还提供了我们自己去实现自定义授权模式!

ASP.NET Core中IdentityServer4如何实现Token令牌身份认证

ASP.NET Core WebAPI基于IdentityServer4实现Token令牌身份认证

四、ASP.NET Core基于IdentityServer4【客户端模式】实现Token令牌身份认证

适合场景:Web API与Web API通信

客户端凭证模式,是最简单的授权模式,因为授权的流程仅发生在Client与Identity Server之间。

该模式的适用场景为服务器与服务器之间的通信。比如对于一个电子商务网站,将订单和物流系统分拆为两个服务分别部署。订单系统需要访问物流系统进行物流信息的跟踪,物流系统需要访问订单系统的快递单号信息进行物流信息的定时刷新。而这两个系统之间服务的授权就可以通过这种模式来实现。

ASP.NET Core中IdentityServer4如何实现Token令牌身份认证

客户端模式(client credentials)

五、ASP.NET Core基于IdentityServer4【密码模式】实现Token令牌身份认证

适合场景:Web应用程序与Web API通信!

Resource Owner其实就是User,所以可以直译为用户名密码模式。密码模式相较于客户端凭证模式,多了一个参与者,就是User。通过User的用户名和密码向Identity Server申请访问令牌。

ASP.NET Core中IdentityServer4如何实现Token令牌身份认证

密码模式(resource owner password credentials)

六、思考与总结

1)、思考
请问 ids4 的客户端授权模式怎么去获取 refresh_token 呢?客户端授权不支持refresh_token!

Refresh tokens are supported for the following flows: authorization code, hybrid and resource owner password credential flow. The clients needs to be explicitly authorized to request refresh tokens by setting AllowOfflineAccess to true.

好像不支持刷新令牌,等token快过期时,你自己重新获取一个就可以了。

解决办法:

1、建议将token的过期时间设置长点或者需要与调用方约定好,需要定期来重新获取新的token。

2、Identityserver4中ResourceOwnerPassword 密码模式支持refresh_token。

2)、总结

密码模式(resource owner password credentials)(支持refresh token为前后分离单页应用设计)
客户端模式(client credentials)(不支持refresh token—(为纯后台api服务消费者设计))

也可以多种混合模式一起使用,具体查看IdentityServer4.Models.GrantTypes


 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:ASP.NET Core中IdentityServer4如何实现Token令牌身份认证的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:小红书无水印视频怎么下载下一篇:

18 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18