zoukankan      html  css  js  c++  java
  • 一步一步学习IdentityServer4 (1) 概要配置说明

    //结合EFCore生成IdentityServer4数据库
                // 项目工程文件最后添加 <ItemGroup><DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /></ItemGroup>
    
    
                //dotnet ef migrations add InitialIdentityServerPersistedGrantDbMigration -c PersistedGrantDbContext -o Data/Migrations/IdentityServer/PersistedGrantDb
                //dotnet ef migrations add InitialIdentityServerConfigurationDbMigration -c ConfigurationDbContext -o Data/Migrations/IdentityServer/ConfigurationDb
    
                //黎又铭 Add 2017-11-28 添加IdentityServer4对EFCore数据库的支持
                //但是这里需要初始化数据 默认生成的数据库中是没有配置数据
                const string connectionString = @"Data Source=192.168.0.42;database=A.IdentityServer4;trusted_connection=yes;";
                var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;
    
                services.AddIdentityServer(idroptions =>
                {
                    //设置将在发现文档中显示的颁发者名称和已发布的JWT令牌。建议不要设置此属性,该属性从客户端使用的主机名中推断颁发者名称
                    idroptions.IssuerUri = "";
                    //设置认证
                    idroptions.Authentication = new IdentityServer4.Configuration.AuthenticationOptions
                    {
                        CheckSessionCookieName = "idr.Cookies",//用于检查会话端点的cookie的名称
                        CookieLifetime = new TimeSpan(1, 0, 0),//身份验证Cookie生存期(仅在使用IdentityServer提供的Cookie处理程序时有效)
                        CookieSlidingExpiration = true,//指定cookie是否应该滑动(仅在使用IdentityServer提供的cookie处理程序时有效)
                        RequireAuthenticatedUserForSignOutMessage = true //指示是否必须对用户进行身份验证才能接受参数以结束会话端点。默认为false
                    };
                    //活动事件 允许配置是否应该将哪些事件提交给注册的事件接收器
                    idroptions.Events = new IdentityServer4.Configuration.EventsOptions
                    {
                        RaiseErrorEvents = true,
                        RaiseFailureEvents = true,
                        RaiseSuccessEvents = true,
                        RaiseInformationEvents = true
    
                    };
                    //允许设置各种协议参数(如客户端ID,范围,重定向URI等)的长度限制
                    idroptions.InputLengthRestrictions = new IdentityServer4.Configuration.InputLengthRestrictions
                    {
                        //可以看出下面很多参数都是对长度的限制 
                        AcrValues = 100,
                        AuthorizationCode = 100,
                        ClientId = 100,
                        /*
                        ..
                        ..
                        ..
                        */
                        ClientSecret = 1000
                    };
                    //用户交互页面定向设置处理
                    idroptions.UserInteraction = new IdentityServer4.Configuration.UserInteractionOptions
                    {
                        LoginUrl = "http://192.168.0.42:5001/Login",//【必备】登录地址  
                        LogoutUrl = "http://192.168.0.42:5001/Logout",//【必备】退出地址 
                        ConsentUrl = "http://192.168.0.42:5001/Consent",//【必备】允许授权同意页面地址
                        ErrorUrl = "http://192.168.0.42:5001/Error", //【必备】错误页面地址
                        LoginReturnUrlParameter = "returnUrl",//【必备】设置传递给登录页面的返回URL参数的名称。默认为returnUrl 
                        LogoutIdParameter = "logoutId", //【必备】设置传递给注销页面的注销消息ID参数的名称。缺省为logoutId 
                        ConsentReturnUrlParameter = "returnUrl", //【必备】设置传递给同意页面的返回URL参数的名称。默认为returnUrl
                        ErrorIdParameter = "errorId", //【必备】设置传递给错误页面的错误消息ID参数的名称。缺省为errorId
                        CustomRedirectReturnUrlParameter = "returnUrl", //【必备】设置从授权端点传递给自定义重定向的返回URL参数的名称。默认为returnUrl
                        CookieMessageThreshold = 5 //【必备】由于浏览器对Cookie的大小有限制,设置Cookies数量的限制,有效的保证了浏览器打开多个选项卡,一旦超出了Cookies限制就会清除以前的Cookies值
                    };
                    //缓存参数处理  缓存起来提高了效率 不用每次从数据库查询
                    idroptions.Caching = new IdentityServer4.Configuration.CachingOptions
                    {
                        ClientStoreExpiration = new TimeSpan(1, 0, 0),//设置Client客户端存储加载的客户端配置的数据缓存的有效时间 
                        ResourceStoreExpiration = new TimeSpan(1, 0, 0),// 设置从资源存储加载的身份和API资源配置的缓存持续时间
                        CorsExpiration = new TimeSpan(1, 0, 0)  //设置从资源存储的跨域请求数据的缓存时间
                    };
                    //IdentityServer支持一些端点的CORS。底层CORS实现是从ASP.NET Core提供的,因此它会自动注册在依赖注入系统中
                    idroptions.Cors = new IdentityServer4.Configuration.CorsOptions
                    {
                        CorsPaths = { ""}, //支持CORS的IdentityServer中的端点。默认为发现,用户信息,令牌和撤销终结点
                        CorsPolicyName = "default", //【必备】将CORS请求评估为IdentityServer的CORS策略的名称(默认为"IdentityServer4")。处理这个问题的策略提供者是ICorsPolicyService在依赖注入系统中注册的。如果您想定制允许连接的一组CORS原点,则建议您提供一个自定义的实现ICorsPolicyService
                        PreflightCacheDuration = new TimeSpan(1, 0, 0)//可为空的<TimeSpan>,指示要在预检Access-Control-Max-Age响应标题中使用的值。默认为空,表示在响应中没有设置缓存头
                    };
    
    
    
                }).AddConfigurationStore(options =>
                {
                    options.ConfigureDbContext = builder =>
                    {
                        builder.UseSqlServer(connectionString,
                            builderoptions =>
                            {
                                builderoptions.MigrationsAssembly(migrationsAssembly);
                            });
                    };
    
    
                })
                .AddOperationalStore(options =>
                {
    
                    options.ConfigureDbContext = builder =>
                    {
                        builder.UseSqlServer(connectionString, builderoptions =>
                        {
                            builderoptions.MigrationsAssembly(migrationsAssembly);
                        });
    
                    };
                    options.EnableTokenCleanup = true;  //允许对Token的清理
                    options.TokenCleanupInterval = 1800;  //清理周期时间Secends
                })
              
                ;

     之前一直用的是IdentityServer3 ,现在逐步开始学习IdentityServer4来处理,先从配置开始把:

    访问下配置页面看下:

    好像没问题

  • 相关阅读:
    阻止事件传播的常用方法
    原生JS获取元素的位置与尺寸
    FileReader 与canvas结合使用显示图片
    dot.js使用心得
    时间格式转换
    JS对象操作
    vue-awesome-swipe 基于vue使用的轮播组件 使用(改)
    vscode 插件推荐
    chrome 发送请求出现:Provisional headers are shown 提示
    手机端
  • 原文地址:https://www.cnblogs.com/liyouming/p/7910784.html
Copyright © 2011-2022 走看看