
























一、身份认证和授权
1.1、身份认证
当客户端访问服务器端资源时,验证客户端是否合法的一种机制。
1.2、授权
当客户端经过身份认证后,能够有限的访问服务端资源的一种机制。
1.3、身份认证和授权方式
1.5、OAth 2.0 与 JWT区别
OAth 2.0 属于引用型token,无用户相关信息。
JWT属于自包含token,有用户相关信息。如地址,电话,id等。
1.6、实际项目方案
实际项目方案中,大多采用Bearer进行身份认证和授权。
1.7、关系
OAuth 2.0 是一种授权框架。用于应用程序之间安全的共享用户资源。它允许用户授权第三方应用程序访问他们的资源。而不必将用户名和密码提供给第三方应用程序 。它定义了授权流程和令牌的颁发、刷新和撤销等机制,但没有规定具体的令牌格式。
JWT是一种令牌的具体实现方式。 轻量级的、基于JSON的安全令牌,用于在用户和服务之间传递声明。在OAuth 2.0中,JWT通常被用作访问令牌(access token)或者身份验证令牌(identity token),用于在客户端和资源服务器之间传递用户的授权信息。OAuth 2.0和JWT之间的关系是,OAuth 2.0定义了授权流程和令牌的使用规范,而JWT是在这个框架下用于实现令牌的一种具体格式。OAuth 2.0可以使用JWT作为访问令牌,以实现安全的用户授权和资源访问。
IdentityServer是一个开源的身份认证和授权服务器,它实现了OpenID Connect和OAuth 2.0协议,可以作为一个独立的认证服务器,也可以与其他应用程序集成。它提供了一种安全的方式来管理用户身份和授权访问资源。
1.8、授权模式
二、IdentityServer4
2.1、功能
保护资源,使用本地账户或通过外部身份提供程序,对用户进行身份验证。
提供会话管理和单点登录,管理和验证客户机,向客户发出表示和访问令牌,验证令牌。
2.2、概念
三、项目
3.1、IdentityServer中心
1、新建Core API。然后新增Config类

using IdentityServer4.Models; namespace Id4Center { public class Config { /// <summary> /// 添加Scope /// </summary> /// <returns></returns> public static List<ApiScope> GetApiResources() { return new List<ApiScope> { new ApiScope("ApiOne") }; } /// <summary> /// 添加客户端 /// </summary> /// <returns></returns> public static List<Client> GetClients() { return new List<Client> { new Client { ClientId = "Client", // 客户端Id ClientName = "ClientApi", // 客户端名称 AllowedGrantTypes = GrantTypes.ClientCredentials, //创建ClientCredentials模式的客户端 ClientSecrets = { new Secret("secret".Sha256()) //带验证码 }, // 客户端有权访问的范围 AllowedScopes = { "ApiOne" } } }; } } }
View Code
2、Program配置
我使用的是.NET Core 7,要是Core 5或者5以下版本,在startup配置。
#region IdentityServer 4 配置 builder.Services.AddIdentityServer() .AddDeveloperSigningCredential() //开发者凭证,在首次启动时,IdentityServer将为您创建一个开发人员签名密钥,该文件名为tempkey.jwk。您不必将该文件签入源代码管理中,如果不存在该文件将被重新创建。 .AddInMemoryApiScopes(Config.GetApiResources()) // 配置资源 .AddInMemoryClients(Config.GetClients()); // 配置客户端 #endregion
//添加IdentityServer app.UseIdentityServer(); //添加授权 app.UseAuthentication();
3、运行测试
URl地址: localhost:44355/.well-known/openid-configuration
4、postman测试token地址
需要注意的几个地方已经标注出来了。

3.2、整体逻辑

四、运行截图
4.1、鉴权中心截图
运行地址:localhost:5000/.well-known/openid-configuration

特别注意这个:"token_endpoint": "http://localhost:5000/connect/token",他是获取token的url地址。
4.2、资源中心测试

4.3、客户端的截图

五、说明
运行客户端程序,需要先运行鉴权中心和资源中心。可以用文件路径+cmd+dotnet run


六、代码
鉴权中心地址:链接
资源中心地址:链接
客户端地址:链接
七、小结
本文所有程序都已全部测试通过。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。