前面将来一些配置,但是很多都不是必要的,先放一些事例需要的简要配置把

既然是IdentityServer4 所里下面的例子我 直接放到 Linux上

测试环境 CentOS 7 +Nginx1.9.3 + .net core 2.0.3

简要配置如下

#region IdentityServer4  By liyouming Add At 2017-11-28
//结合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;Initial Catalog=A.IdentityServer4;User ID=sa;password=lym123!@#;Integrated Security=false;";
var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;
const string customUrl = "http://192.168.0.42:5000";
#region 添加对IdentiyServer4配置内容处理 By Liyouming 2017-11-29
services.AddIdentityServer(idroptions =>
{
//设置将在发现文档中显示的颁发者名称和已发布的JWT令牌。建议不要设置此属性,该属性从客户端使用的主机名中推断颁发者名称
//idroptions.IssuerUri = "";
//设置认证
idroptions.Authentication = new IdentityServer4.Configuration.AuthenticationOptions
{
//监控浏览器cookie不难发现lym.Cookies=8660972474e55224ff37f7421c79a530 实际是cookie记录服务器session的名称
CheckSessionCookieName = "lym.Cookies",//用于检查会话端点的cookie的名称
CookieLifetime = new TimeSpan(, , ),//身份验证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 = customUrl + "/Account/Login",//【必备】登录地址
LogoutUrl = customUrl + "/Account/Logout",//【必备】退出地址
ConsentUrl = customUrl + "/Account/Consent",//【必备】允许授权同意页面地址
ErrorUrl = customUrl + "/Account/Error", //【必备】错误页面地址
LoginReturnUrlParameter = "returnUrl",//【必备】设置传递给登录页面的返回URL参数的名称。默认为returnUrl
LogoutIdParameter = "logoutId", //【必备】设置传递给注销页面的注销消息ID参数的名称。缺省为logoutId
ConsentReturnUrlParameter = "returnUrl", //【必备】设置传递给同意页面的返回URL参数的名称。默认为returnUrl
ErrorIdParameter = "errorId", //【必备】设置传递给错误页面的错误消息ID参数的名称。缺省为errorId
CustomRedirectReturnUrlParameter = "returnUrl", //【必备】设置从授权端点传递给自定义重定向的返回URL参数的名称。默认为returnUrl
CookieMessageThreshold = //【必备】由于浏览器对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 = new List<PathString>() {
new PathString("/")
}, //支持CORS的IdentityServer中的端点。默认为发现,用户信息,令牌和撤销终结点 CorsPolicyName = "default", //【必备】将CORS请求评估为IdentityServer的CORS策略的名称(默认为"IdentityServer4")。处理这个问题的策略提供者是ICorsPolicyService在依赖注入系统中注册的。如果您想定制允许连接的一组CORS原点,则建议您提供一个自定义的实现ICorsPolicyService
PreflightCacheDuration = new TimeSpan(, , )//可为空的<TimeSpan>,指示要在预检Access-Control-Max-Age响应标题中使用的值。默认为空,表示在响应中没有设置缓存头
}; })
#endregion #region 添加IdentityServer4 认证证书相关处理 By Liyouming 2017-11-29
//AddSigningCredential 添加登录证书 这个是挂到IdentityServer4中间件上 提供多种证书处理 RsaSecurityKey\SigningCredentials
//这里可以采用IdentiServe4的证书封装出来
//添加一个签名密钥服务,该服务将指定的密钥材料提供给各种令牌创建/验证服务。您可以从证书存储中传入X509Certificate2一个SigningCredential或一个证书引用
//.AddSigningCredential(new System.Security.Cryptography.X509Certificates.X509Certificate2()
//{
// Archived = true,
// FriendlyName = "",
// PrivateKey = System.Security.Cryptography.AsymmetricAlgorithm.Create("key")
//})
//AddDeveloperSigningCredential在启动时创建临时密钥材料。这是仅用于开发场景,当您没有证书使用。
//生成的密钥将被保存到文件系统,以便在服务器重新启动之间保持稳定(可以通过传递来禁用false)。
//这解决了在开发期间client / api元数据缓存不同步的问题
.AddDeveloperSigningCredential()
//添加验证令牌的密钥。它们将被内部令牌验证器使用,并将显示在发现文档中。
//您可以从证书存储中传入X509Certificate2一个SigningCredential或一个证书引用。这对于关键的转换场景很有用
//.AddValidationKeys(new AsymmetricSecurityKey[] { //})
#endregion #region 添加IdentityServer4用户缓存数据 By Liyouming 2017-11-29
//添加配置数据全部配置到内存中 如果有EFCore数据库持久化这里不会配置 只需要配置 AddConfigurationStore、AddOperationalStore 数据仓储服务
//寄存器IClientStore和ICorsPolicyService实现基于内存中的Client配置对象集合。
//.AddInMemoryClients(IdrConfig.IdrConfigurations.GetClient())
//IResourceStore基于IdentityResource配置对象的内存中收集来注册实现。
//.AddInMemoryIdentityResources(IdrConfig.IdrConfigurations.GetIdentityResources())
//IResourceStore基于ApiResource配置对象的内存中收集来注册实现。
//.AddInMemoryApiResources(IdrConfig.IdrConfigurations.GetApiResources())
//添加测试用户
//.AddTestUsers(new List<IdentityServer4.Test.TestUser>() { // new IdentityServer4.Test.TestUser{
// SubjectId=Guid.NewGuid().ToString(),
// Username="liyouming",
// Password="liyouming" // }
//})
#endregion #region 添加对IdentityServer4 EF数据库持久化支持 By Liyouming 2017-11-29
//黎又铭 Add 2017-11-28 添加IdentityServer4对EFCore数据库的支持
.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 = ; //清理周期时间Secends
})
#endregion ;
#endregion

在Linux环境下启动 Nginx 做好配置  开好端口 然后执行命令

这里需要注意的是 在前面的 .net core  命令都是 dotnet run [应用程序].dll

然而在 .net core 2.0.3版本中是 dotnet [应用程序].dll

不然你会发现有这个错误

如果我们用 dotnet  [应用程序].dll  如图:

看到程序依然运行起来了

下面我们打开网站看下呢

查看下ip

访问下:

没有问题,下面访问下配置

也没有问题,在代码里面 我设置 了 About 页面为授权访问页面

下面点击下About页面看下效果,激动~~~

OK  ,没毛病,用自定义业务数据帐号登录测试下,登录后,没毛病 搞定~~~

一步一步学习IdentityServer4 (2) 开始一个简单的事例的更多相关文章

  1. Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...

  2. Linux系统学习笔记之 1 一个简单的shell程序

    不看笔记,长时间不用自己都忘了,还是得经常看看笔记啊. 一个简单的shell程序 shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤 第一步: ...

  3. Ruby学习笔记2 : 一个简单的Ruby网站,搭建ruby环境

    Ruby on Rails website 的基础是 请求-返回 循环. 首先是浏览器请求服务器, 第二步,Second, in our Rails application, the route ta ...

  4. Django 学习笔记之六 建立一个简单的博客应用程序

    最近在学习django时建立了一个简单的博客应用程序,现在把简单的步骤说一下.本人的用的版本是python 2.7.3和django 1.10.3,Windows10系统 1.首先通过命令建立项目和a ...

  5. Golang学习-第二篇 搭建一个简单的Go Web服务器

    序言 由于本人一直从事Web服务器端的程序开发,所以在学习Golang也想从Web这里开始学起,如果对Golang还不太清楚怎么搭建环境的朋友们可以参考我的上一篇文章 Golang的简单介绍及Wind ...

  6. Linux内核分析第二周学习博客——完成一个简单的时间片轮转多道程序内核代码

    Linux内核分析第二周学习博客 本周,通过实现一个简单的操作系统内核,我大致了解了操作系统运行的过程. 实验主要步骤如下: 代码分析: void my_process(void) { int i = ...

  7. laravel学习:php写一个简单的ioc服务管理容器

    php写一个简单的ioc服务管理容器 原创: 陈晨 CoderStory 2018-01-14 最近学习laravel框架,了解到laravel核心是一个大容器,这个容器负责几乎所有服务组件的实例化以 ...

  8. UNP学习笔记2——从一个简单的ECHO程序分析TCP客户/服务器之间的通信

    1 概述 编写一个简单的ECHO(回复)程序来分析TCP客户和服务器之间的通信流程,要求如下: 客户从标准输入读入一行文本,并发送给服务器 服务器从网络输入读取这个文本,并回复给客户 客户从网络输入读 ...

  9. DuiLib学习笔记2——写一个简单的程序

    我们要独立出来自己创建一个项目,在我们自己的项目上加皮肤这才是初衷.我的新建项目名为:duilibTest 在duilib根目录下面有个 Duilib入门文档.doc 我们就按这个教程开始入门 首先新 ...

随机推荐

  1. Digia公司投资qt

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  2. C# list.ForEach用法

    list.ForEach(delegate(T model) { ... });

  3. sql service ---- update和delete 误操作数据 ---- 恢复数据

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327 问题: 经常看到有人误删数据,或者误操作,特别是update和delete的 ...

  4. KVM管理概述

    一.使用QEMU管理虚拟机 1.KVM指南 https://activedoc.opensuse.org/book/opensuse-virtualization-with-kvm/part-iii- ...

  5. UIScrollView增加回弹效果

    项目中经常要增加上下滑动回弹的效果: self.scrollView.alwaysBounceVertical = YES;

  6. [转载]function与感叹号

    http://swordair.com/function-and-exclamation-mark/ 最近有空可以让我静下心来看看各种代码,function与感叹号的频繁出现,让我回想起2个月前我回杭 ...

  7. 是否使用TDD(测试驱动开发)进行UI开发

    问题 StackOverflow上有一则是否使用TDD(测试驱动开发)进行UI开发 的提问. _JacobE_问: 对于是否使用TDD进行开发UI这件事,我想了很久,但难以决定.我想听听你们的意见. ...

  8. pandas 对时间与日期处理

    1.先把字符串时间转为时间类型: def func(x): y =pd.Timestamp(x) return y data.index = data.发博时间.apply(lambda x : fu ...

  9. linux命令-grep+正则表达式用法

    目标文件/etc/passwd,使用grep命令或egrep 1.显示出所有含有root的行:egrep 'root' passwd 2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的 ...

  10. hdu 确定比赛名次(拓扑排序)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    ...