博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IdentityServer4【Topic】之定义客户端
阅读量:4967 次
发布时间:2019-06-12

本文共 2857 字,大约阅读时间需要 9 分钟。

Defining Clients 定义客户端

客户端表示哪些可以从你的IdentityServer拿到token的应用。

除了一些可能会变化的细节之外,通常情况下你需要为一个客户端定义如下通用的设置:

  • 一个唯一的client id
  • 一个secret(如果需要的话)
  • 被允许与token service的交互(也叫做授权类型,grant type)
  • 一个网络位置,其中标识和/或访问令牌被发送到(称为重定向URI)的地方
  • 客户端被允许访问的范围(即资源)列表

在运行时,定义的clients(客户端列表)通过一个实现了IClientStore的对象来进行访问。允许从任何数据源加载他们(clients)。在这个文档中我们使用的是内存中的实现。你可以在StartUp类中的ConfigureService方法中调用AddInmemoryClients扩展方法来进行注册服务。

Defining a client for server to server communication 定义一个客户端作为服务到服务的通信

这个场景下不存在交互的用户,就是一个服务(也叫客户端)想要访问一个Api(也叫范围)。

public class Clients{    public static IEnumerable
GetClients() { return new List
{ new Client { ClientId = "service.client", ClientSecrets = { new Secret("secret".Sha256()) }, AllowedGrantTypes = GrantTypes.ClientCredentials, AllowedScopes = { "api1", "api2.read_only" } } }; }}

Defining browser-based JavaScript client (e.g. SPA) for user authentication and delegated access and API  定义基于浏览器的JavaScript客户端(例如SPA),用于用户身份验证、委托访问和API

这种客户端从javascript利用所谓的implicit flow流程(属于OAuth2.0的范畴,共有四种流程分别是Aothorization code、Implicit、ResourceOwnerPassword、ClientCredential,请参考)来请求一个id token和access token:

var jsClient = new Client{    ClientId = "js",    ClientName = "JavaScript Client",    ClientUri = "http://identityserver.io",    AllowedGrantTypes = GrantTypes.Implicit,    AllowAccessTokensViaBrowser = true,    RedirectUris =           { "http://localhost:7017/index.html" },    PostLogoutRedirectUris = { "http://localhost:7017/index.html" },    AllowedCorsOrigins =     { "http://localhost:7017" },    AllowedScopes =    {        IdentityServerConstants.StandardScopes.OpenId,        IdentityServerConstants.StandardScopes.Profile,        IdentityServerConstants.StandardScopes.Email,        "api1", "api2.read_only"    }};

Defining a server-side web application (e.g. MVC) for use authentication and delegated API access  定义一个服务器端web应用程序(例如MVC),用于使用身份验证和委托的API访问

交互式服务器端(或本机桌面/移动)应用程序使用混合流(Authorization code和Implicit混合)。这种流提供了最好的安全性,因为存取令牌仅通过反向通道(back-channel)调用传输(并且允许您访问刷新令牌):

var mvcClient = new Client{    ClientId = "mvc",    ClientName = "MVC Client",    ClientUri = "http://identityserver.io",    AllowedGrantTypes = GrantTypes.Hybrid,    AllowOfflineAccess = true,    ClientSecrets = { new Secret("secret".Sha256()) },    RedirectUris =           { "http://localhost:21402/signin-oidc" },    PostLogoutRedirectUris = { "http://localhost:21402/" },    FrontChannelLogoutUri =  "http://localhost:21402/signout-oidc",    AllowedScopes =    {        IdentityServerConstants.StandardScopes.OpenId,        IdentityServerConstants.StandardScopes.Profile,        IdentityServerConstants.StandardScopes.Email,        "api1", "api2.read_only"    },};

 

转载于:https://www.cnblogs.com/pangjianxin/p/9278387.html

你可能感兴趣的文章
libmidas.so.2
查看>>
开发WINDOWS服务程序
查看>>
httpencode编码
查看>>
cross socket和msgpack的数据序列和还原
查看>>
解决跨操作系统平台JSON中文乱码问题
查看>>
DELPHI搭建centos开发环境
查看>>
IdHTTPServer允许跨域访问
查看>>
DELPHI开发LINUX包
查看>>
更新.net core 3.0,dotnet ef命令无法使用的解决办法
查看>>
React躬行记(13)——React Router
查看>>
前端利器躬行记(1)——npm
查看>>
前端利器躬行记(2)——Babel
查看>>
前端利器躬行记(3)——webpack基础
查看>>
前端利器躬行记(4)——webpack进阶
查看>>
前端利器躬行记(5)——Git
查看>>
前端利器躬行记(6)——Fiddler
查看>>
每次阅读外文技术资料都头疼,终于知道原因了。
查看>>
zabbix短信网关调用问题总结
查看>>
130242014034-林伟领-实验一
查看>>
Forbidden You don't have permission to access / on this server.
查看>>