IdentityServer Topics(1)- 启动说明
启动
IdentityServer的启动是中间件和服务的组合来实现的。 所有配置都在你的启动类(Startup.cs)中完成。
配置服务
通过以下方式调用将IdentityServer服务添加到DI系统:
public void ConfigureServices(IServiceCollection services)
{
var builder = services.AddIdentityServer();
}
这将返回一个生成器对象,而这个对象又有一些方便的方法来连接其他的服务。
密钥
AddSigningCredential
添加一个签名密钥服务,该服务将指定的密钥提供给各种令牌创建/验证服务。 您可以传入X509Certificate2
,SigningCredential
或对证书存储区中证书的引用。AddDeveloperSigningCredential
在启动时创建临时密钥。 这是仅用于开发场景,当您没有证书使用。 生成的密钥将被保存到文件系统,以便在服务器重新启动之间保持稳定(可以通过传递false来禁用)。 这解决了在开发期间client / api元数据缓存不同步的问题。AddValidationKey
添加验证令牌的密钥。 它们将被内部令牌验证器使用,并将显示在发现文档中。 您可以传入X509Certificate2
,SigningCredential
或对证书存储区中证书的引用。 这对于关键的转换场景很有用。
内存存储配置
各种“in-memory“配置API允许从配置对象的内存列表配置IdentityServer。 这些“in-memory”的集合可以在宿主应用程序中进行硬编码,也可以从配置文件或数据库动态加载。 但是,在设计时,只有托管应用程序启动时才会创建这些集合。
使用这些配置API可用于原型设计,开发和/或测试时不需要在运行时动态查询配置数据的数据库。 如果配置很少改变,这种配置方式也可能适用于生产方案,或者如果必须更改值,则需要重新启动应用程序并不方便。
AddInMemoryClients
添加基于IClientStore
和ICorsPolicyService
的内存集合注册实现,以注册客户端配置对象。AddInMemoryIdentityResources
添加基于IResourceStore
的IdentityResource
的内存集合注册实现,以注册身份验证资源。AddInMemoryApiResources
添加基于IResourceStore
的ApiResource
的内存集合注册实现,以注册API资源。
测试存储
TestUser
类在IdentityServer中模拟用户,凭据和声明。 TestUser
的使用与使用“in-memory”存储类似,因为它适用于原型开发和/或测试。 生产中不推荐使用TestUser
。
AddTestUsers
基于TestUserStore
的TestUser
对象的集合注册实现。 还注册IProfileService
和IResourceOwnerPasswordValidator
的实现。
额外服务
AddExtensionGrantValidator
添加用于扩展授权的IExtensionGrantValidator
实现。AddSecretParser
添加用于解析客户端或API资源凭证的ISecretParser
实现。AddSecretValidator
添加ISecretValidator
实现,以针对凭证存储验证客户端或API资源凭证。AddResourceOwnerValidator 添加
IResourceOwnerPasswordValidator`实现,用于验证资源所有者密码凭据授权类型的用户凭证。AddProfileService 添加
IProfileService以实现连接到您的自定义用户配置文件存储。
DefaultProfileService`类提供了默认实现,它依靠身份验证cookie作为唯一的令牌发放源。AddAuthorizeInteractionResponseGenerator
添加IAuthorizeInteractionResponseGenerator
实现来在授权端点定制逻辑,以便显示用户错误,登录,同意或任何其他自定义页面的UI。 AuthorizeInteractionResponseGenerator类提供了一个默认的实现,因此如果需要增加现有的行为,可以考虑从这个现有的类派生。AddCustomAuthorizeRequestValidator
添加ICustomAuthorizeRequestValidator
实现,以在授权端点定制请求参数验证。AddCustomTokenRequestValidator
添加ICustomTokenRequestValidator
实现来定制令牌端点处的请求参数验证。AddRedirectUriValidator
添加IRedirectUriValidator
实现来自定义重定向URI验证。AddAppAuthRedirectUriValidator
添加一个“AppAuth”(OAuth 2.0 for Native Apps)兼容的重定向URI验证器(进行严格的验证,但也允许随机端口为http://127.0.0.1)。AddJwtBearerClientAuthentication
使用JWT对客户机认证的支持。
缓存
客户端和资源配置数据经常被IdentityServer使用。 如果从数据库或其他外部存储装载此数据,那么频繁地重新加载相同的数据代价可能是昂贵的。
AddInMemoryCaching
要使用下面描述的任何缓存,必须在DI中注册ICache的实现。 此API注册基于ASP.NET Core的ICache 的MemoryCache默认内存缓存实现。AddClientStoreCache
注册一个IClientStore
装饰器实现,它将维护客户端配置对象的内存缓存。 缓存持续时间可以在IdentityServerOptions
上的缓存配置选项上配置。AddResourceStoreCache
注册一个IResourceStore
装饰器实现,它将维护IdentityResource
和ApiResource
配置对象的内存缓存。 缓存持续时间可以在IdentityServerOptions
上的缓存配置选项上配置。AddCorsPolicyCache
注册一个ICorsPolicyService
装饰器实现,它将维护一个CORS策略服务评估结果的内存缓存。 缓存持续时间可以在IdentityServerOptions上的缓存配置选项上配置。
可以进一步定制缓存:
默认缓存依赖于ICache实现。 如果您希望自定义特定配置对象的缓存行为,则可以在依赖注入系统中替换此实现。
ICache<T>
的默认实现依赖于.NET提供的IMemoryCache
接口(和MemoryCache
实现)。 如果您希望自定义内存中的缓存行为,则可以替换依赖注入系统中的IMemoryCache
实现。
配置中间件
您需要通过以下方式调用将IdentityServer添加到管道中:
public void Configure(IApplicationBuilder app)
{
app.UseIdentityServer();
}
UseIdentityServer
包含对UseAuthentication
的调用,所以没有必要同时调用这两个。
中间件没有额外的配置。
请注意,添加顺序在管道配置中很重要。 例如,您需要在添加MVC中间件之前添加IdentitySever。
IdentityServer Topics(1)- 启动说明的更多相关文章
- IdentityServer Topics(7)- 注销
注销IdentityServer与删除身份cookie一样简单,但是我们必须考虑将用户从客户端应用程序(甚至可能是上游身份提供程序)中注销. 一.删除身份认证Cookie 要删除身证认证cookie, ...
- IdentityServer Topics(3)- 定义客户端
客户端代表可以从您的身份服务器请求令牌的应用程序. 细节有所不同,但您通常为客户端定义以下常用设置: 一个唯一的客户端ID 一个密钥,如果需要 允许与令牌服务的交互(称为授权类型) 身份或访问令牌被发 ...
- IdentityServer Topics(4)- 登录
为了使IdentityServer代表用户发布令牌,该用户必须登录到IdentityServer. Cookie认证 使用来自ASP.NET Core的cookie身份验证处理程序管理的cookie跟 ...
- IdentityServer Topics(5)- 使用第三方登录
ASP.NET Core有一个灵活的方式来处理外部认证. 这包括几个步骤. 如果您使用的是ASP.NET Identity,则许多底层技术细节对您而言都是隐藏的. 建议您还阅读Microsoft文档并 ...
- IdentityServer Topics(6)- Windows身份验证
在支持的平台上,您可以让IdentityServer使用Windows身份验证(例如,对Active Directory)对用户进行身份验证. 当您使用以下身份托管IdentityServer时,当前 ...
- IdentityServer Topics(2)- 定义资源
您通常在系统设计中的第一件事就是您要保护的资源. 这可能是您的用户的身份信息,如个人资料数据或电子邮件地址,或访问API. 您可以使用C#对象模型定义资源(硬编码),或从数据存储中加载它们. IRes ...
- 【IdentityServer4文档】- 启动和概览
启动和概览 有两种基本的方式来启动一个新的 IdentityServer 项目: 从空项目开始(从头开始) 从 Visual Studio 的 ASP.NET Identity 模板开始 假如您从头开 ...
- 入门教程:.NET开源OpenID Connect 和OAuth解决方案IdentityServer v3 创建简单的OAuth2.0服务器,客户端和API(三)
本教程的目的在于创造尽可能简单的identityserver安装作为一个oauth2授权服务器.这应该能够让你了解一些基本功能和配置选项(完整的源代码可以发现在这里).在后面的文档中会介绍更多的高级功 ...
- 【总】IdentityServer4 32篇汇总
随笔分类 - IdentityServer4 IdentityServer4 常见问题 - 用户拒绝授权后报错 摘要: 1.问题说明 在 IdentityServer4 Web 授权中,一般会有一个显 ...
随机推荐
- WEB版一次选择多个图片进行批量上传(WebUploader)的解决方案
最近在学习百度的开源上传组件WebUploader,上一篇文章,学习了批量文件上传,今天学习一下批量图片上传,实际上与文件上传很类似,只是添加了图片显示功能,这个功能WebUploader组件中已经提 ...
- web项目错误页面友好处理404,500等
写在前面: 在web项目中,可能会出现404.500等错误页面,给用户体验不怎么好,所以我们可以对这些错误页面进行友好的处理. 步骤: 1.配置web.xml: <!-- 错误页面友好显示 -- ...
- Effective Java 第三版——9. 使用try-with-resources语句替代try-finally语句
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- spring boot使用profile来区分正式环境配置文件与测试环境配置文件
转载请在页首注明作者与出处 一:前言 经常在开发的时候,项目中的配置文件,在个人开发的时候有一套配置文件,在测试环境有一套配置文件,在正式环境有一套配置文件,这个时候如果配置文件复杂,需要改的东西就特 ...
- 如何安装mysql
如何安装mysql对于初学者来说的确是很麻烦,首先要知道安装mysql仅仅只是安装一个mysql系统,是没有任何可视化操作界面的,所以还要安装一个mysql的管理工具,这是初学者容易蒙的地方之一. m ...
- 模板引擎(smarty)知识点总结II
今天咱们继续来学习smarty!!! 知识点1:对于三种变量 常量的引用 有哪三种变量?a.assign赋值 b.系统保留变量(包括:$smarty.get,$smarty.post,$smarty. ...
- BLE抓包是怎么回事儿?
BLE抓包 在进行网络开发的时候,抓包是一个很重要的调试过程,通过抓包可以分析网络传输的数据是否正确,可以深入理解网络传输过程.在物联网开发中,BLE低功耗蓝牙技术是一种非常通用的网络传输方式.在学习 ...
- Android模拟器
一.Genymotion 1.下载安装:https://www.genymotion.com/download/ (注:安装前需要先注册) 因为Genymotion运行需要VirtualBox,如果 ...
- js随机数生成,生成m-n的随机数
使用js生成n到m间的随机数字,主要目的是为后期的js生成验证码做准备,Math.random()函数返回0和1之间的伪随机数 var random = Math.random(); console. ...
- Xampp配置本地域名及常见错误解决
本地域名配置 1.计算机-->C盘-->Windows-->System32-->drivers-->etc-->hosts 127.0.0.1 loc ...