博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IdentityServer4 密码模式认证
阅读量:5213 次
发布时间:2019-06-14

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

 授权服务器设置  

添加用户

  添加测试用户,也可以从数据库查  

      

public static List
GetTestUser() { return new List
() { new TestUser(){ SubjectId = "1", Username ="zps", Password = "zps", Claims = new List
(){ new Claim("role","zps"), new Claim("aaa","asdasdsd"), } }, new TestUser(){ SubjectId = "2", Username ="admin", Password = "admin", Claims = new List
(){ new Claim("role","admin") } } }; }
添加Api资源                                                                                                                            

   添加api资源 ,api的key要和注册的client的api要匹配

public static IEnumerable
GetResource() { return new List
(){ new ApiResource("api","my api") }; }

 

 

添加客户端

 

  1.    客户端模式
  2.    密码模式
  3.    授权码模式
  4.    混合模式

    授权码模式和mvc模式的时候    这两个模式先不管

         //请求确认

RequireConsent = false,   这个属性要注意  如果是true  会先跳转到确认页面 然后再跳转到RedirectUris
 
public static IEnumerable
GetClients() { return new List
(){ new Client(){ ClientId="client", //客户端模式 AllowedGrantTypes=GrantTypes.ClientCredentials, ClientSecrets={
new Secret("secret".Sha256())}, AllowedScopes={
"api"} }, new Client(){ ClientId="pwdClient", //OAuth密码模式 AllowedGrantTypes=GrantTypes.ResourceOwnerPassword, ClientSecrets={
new Secret("secret".Sha256())}, AllowedScopes={
"api"} }, new Client { ClientId = "mvc", ClientName = "MVC Client", AllowedGrantTypes = GrantTypes.Hybrid, ClientSecrets = { new Secret("secret".Sha256()) }, // where to redirect to after login RedirectUris = { "http://localhost:5001/signin-oidc" }, RequireConsent = false, AllowOfflineAccess = true, // where to redirect to after logout PostLogoutRedirectUris = { "http://localhost:5001/signout-callback-oidc" }, AllowedScopes = new List
{ IdentityServerConstants.StandardScopes.OpenId, IdentityServerConstants.StandardScopes.Profile, } }, new Client { ClientId = "js", ClientName = "JavaScript Client", AllowedGrantTypes = GrantTypes.Code, RequirePkce = true, RequireClientSecret = false, RedirectUris = { "http://localhost:5003/callback.html" }, PostLogoutRedirectUris = { "http://localhost:5003/index.html" }, AllowedCorsOrigins = { "http://localhost:5003" }, RequireConsent = false, AllowedScopes = { IdentityServerConstants.StandardScopes.OpenId, IdentityServerConstants.StandardScopes.Profile, "api" } } }; }

 

 

 

添加IdentityServer 保护的资源

 

    可以自定义Claim

public static IEnumerable
GetIdentityResources() { return new IdentityResource[] { new IdentityResources.OpenId(), new IdentityResources.Profile(), }; }

 

 

把identityserver注入到容器

 

  .AddDeveloperSigningCredential() 生成token 需要的密钥和公钥  正式环境需要换成正经的 

     o.UserInteraction.LoginUrl = "/Auth/Login";

          o.UserInteraction.LogoutUrl = "/Auth/Logout";

o.UserInteraction.ErrorUrl = "/Auth/Error";   这三个是混合模式需要的  登录的地址  登出的地址  授权失败的地址
services.AddIdentityServer(o =>            {                o.UserInteraction.LoginUrl = "/Auth/Login";                o.UserInteraction.LogoutUrl = "/Auth/Logout";                o.UserInteraction.ErrorUrl = "/Auth/Error";            })                    .AddInMemoryIdentityResources(Config.GetIdentityResources())                    .AddDeveloperSigningCredential()                    .AddInMemoryClients(Config.GetClients())                    .AddInMemoryApiResources(Config.GetResource())                    .AddTestUsers(Config.GetTestUser());

 

    Configure把中间件加到netcore中

app.UseIdentityServer();

postman测试

  1.   grant-type:密码模式对应 password 
  2.        username 用户名
  3.       password  密码
  4.      client_id 客户端id  对应 授权服务ClientId
  5.      client_secret  客户端secret

 

转载于:https://www.cnblogs.com/zhaops/p/10656265.html

你可能感兴趣的文章
数据库系统原理
查看>>
leetcode 947. Most Stones Removed with Same Row or Column
查看>>
mong 按 geometry 搜索 地理位置信息
查看>>
框架网址和其他的一些网址
查看>>
angular ng-class\tab切换(从服务器引入数据)或用指令写
查看>>
不要追求最新的技术
查看>>
Oracle Golden Gate 系列十五 -- GG Trails 说明
查看>>
Oracle 11g 新特性 -- SecureFiles 说明
查看>>
Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务
查看>>
梳理 Opengl ES 3.0 (三)顶点坐标变换
查看>>
Office2010安装错误
查看>>
Selenium2+python自动化7-xpath定位
查看>>
算法导论笔记:02基本排序查找算法
查看>>
Redis源码解析:08对象
查看>>
AIDL--------应用之间的通信接口
查看>>
java的JVM机制
查看>>
[Python笔记]第六篇:文件处理
查看>>
阶段一:读几本经济学书
查看>>
C结构体struct 和 共用体union的使用测试
查看>>
Jquery 的ajax里边不能识别$(this)
查看>>