基于IdentityServer4 实现.NET Core的认证授权 (2)

        客户端从标识服务器请求令牌,要么用于认证用户(请求身份令牌),要么用于访问资源(请求访问令牌)
        客户端必须首先在身份服务器上注册,然后才能请求令牌
       这里的客户端可以是web应用程序、native mobile, desktop applications, SPA 等程序


Resource
  资源是你想要用身份认证服务器保护的东西,如:用户的身份数据或api
  每个资源都有一个惟一的名称,客户端使用这个名称来指定他们想要访问的资源
  关于用户的身份数据标识(也称为claim),例如姓名或电子邮件地址


Identity Token
  身份令牌代表身份验证过程的结果


Access Token
  访问令牌授权客户端以允许访问哪些API资源,访问令牌包含客户端和用户的信息

 

IdentityServer4的简单示例

 我们先来看一个简单的例子,我们有三个API ,Order, Product, Inventory,我们利用IdentityServer4来实现对着三个API的认证和授权。首先我们需要一个实现认证和授权的服务,然后外部要想访问我们的API就必须通过统一的认证和授权服务的任何才可以,否则就是返回401: UnAuthorized ,未经授权的访问。我们既可以将身份信息存储到内存中,也可以将其持久化到数据库中,此处我们使用内存模式快速的演示实现(示例代码中也支持存储到DB中,使用SqlLite + EF Core

首先我们需要安装IdentityServer4的Nuget包,然后在ConfigureServices方法中添加如下代码来初始化需要保护的API资源信息,代码如下:

 

public void ConfigureServices(IServiceCollection services) { // config data in memory services.AddIdentityServer() .AddDeveloperSigningCredential() .AddInMemoryApiResources(InitMemoryData.GetApiResources()) .AddInMemoryClients(InitMemoryData.GetClients()) .AddTestUsers(InitMemoryData.GetUsers()); // config in DB //services.AddDbContext<IdentityServerDbContext>(options => // options.UseSqlite(sqliteConnection)); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdgdg.html