• IdentityServer Topics(1)- 启动说明


    启动

    IdentityServer的启动是中间件和服务的组合来实现的。 所有配置都在你的启动类(Startup.cs)中完成。

    配置服务

    通过以下方式调用将IdentityServer服务添加到DI系统:

    public void ConfigureServices(IServiceCollection services)
    {
        var builder = services.AddIdentityServer();
    }
    

    这将返回一个生成器对象,而这个对象又有一些方便的方法来连接其他的服务。

    密钥

    • AddSigningCredential
      添加一个签名密钥服务,该服务将指定的密钥提供给各种令牌创建/验证服务。 您可以传入X509Certificate2SigningCredential或对证书存储区中证书的引用。

    • AddDeveloperSigningCredential
      在启动时创建临时密钥。 这是仅用于开发场景,当您没有证书使用。 生成的密钥将被保存到文件系统,以便在服务器重新启动之间保持稳定(可以通过传递false来禁用)。 这解决了在开发期间client / api元数据缓存不同步的问题。

    • AddValidationKey
      添加验证令牌的密钥。 它们将被内部令牌验证器使用,并将显示在发现文档中。 您可以传入X509Certificate2SigningCredential或对证书存储区中证书的引用。 这对于关键的转换场景很有用。

    内存存储配置

    各种“in-memory“配置API允许从配置对象的内存列表配置IdentityServer。 这些“in-memory”的集合可以在宿主应用程序中进行硬编码,也可以从配置文件或数据库动态加载。 但是,在设计时,只有托管应用程序启动时才会创建这些集合。

    使用这些配置API可用于原型设计,开发和/或测试时不需要在运行时动态查询配置数据的数据库。 如果配置很少改变,这种配置方式也可能适用于生产方案,或者如果必须更改值,则需要重新启动应用程序并不方便。

    • AddInMemoryClients
      添加基于IClientStoreICorsPolicyService的内存集合注册实现,以注册客户端配置对象。

    • AddInMemoryIdentityResources
      添加基于IResourceStoreIdentityResource的内存集合注册实现,以注册身份验证资源。

    • AddInMemoryApiResources
      添加基于IResourceStoreApiResource的内存集合注册实现,以注册API资源。

    测试存储

    TestUser类在IdentityServer中模拟用户,凭据和声明。 TestUser的使用与使用“in-memory”存储类似,因为它适用于原型开发和/或测试。 生产中不推荐使用TestUser

    • AddTestUsers
      基于TestUserStoreTestUser对象的集合注册实现。 还注册IProfileServiceIResourceOwnerPasswordValidator的实现。

    额外服务

    • 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装饰器实现,它将维护IdentityResourceApiResource配置对象的内存缓存。 缓存持续时间可以在IdentityServerOptions上的缓存配置选项上配置。

    • AddCorsPolicyCache
      注册一个ICorsPolicyService装饰器实现,它将维护一个CORS策略服务评估结果的内存缓存。 缓存持续时间可以在IdentityServerOptions上的缓存配置选项上配置。

    可以进一步定制缓存:
    默认缓存依赖于ICache实现。 如果您希望自定义特定配置对象的缓存行为,则可以在依赖注入系统中替换此实现。

    ICache<T>的默认实现依赖于.NET提供的IMemoryCache接口(和MemoryCache实现)。 如果您希望自定义内存中的缓存行为,则可以替换依赖注入系统中的IMemoryCache实现。

    配置中间件

    您需要通过以下方式调用将IdentityServer添加到管道中:

    public void Configure(IApplicationBuilder app)
    {
        app.UseIdentityServer();
    }
    

    UseIdentityServer包含对UseAuthentication的调用,所以没有必要同时调用这两个。

    中间件没有额外的配置。

    请注意,添加顺序在管道配置中很重要。 例如,您需要在添加MVC中间件之前添加IdentitySever。

  • 相关阅读:
    什么是MIME
    bit/byte/英文字符/汉字之间的换算及java八大基本数据类型的占字节数
    js 上传文件大小检查
    java.toString() ,(String),String.valueOf的区别
    java 下载文件的样例
    回调函数分析
    IO流详析
    各个秒之间的换算率
    内边距:
    Less-6【报错+BOOL类型】
  • 原文地址:https://www.cnblogs.com/stulzq/p/8144056.html
Copyright © 2020-2023  润新知