日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于 IdentityServer3 实现 OAuth 2.0 授权服务【密码模式(Resource Owner Password Credentials)】...

發(fā)布時間:2023/12/9 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于 IdentityServer3 实现 OAuth 2.0 授权服务【密码模式(Resource Owner Password Credentials)】... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

密碼模式(Resource Owner Password Credentials Grant)中,用戶向客戶端提供自己的用戶名和密碼。客戶端使用這些信息,向"服務商提供商"索要授權(quán)。基于之前的?IdentityServer3 實現(xiàn) OAuth 2.0 授權(quán)服務【客戶端模式(Client Credentials Grant)】 修改。

客戶端

public class Clients{public static List<Client> Get(){return new List<Client>{// no human involvednew Client{ClientName = "App接口服務",ClientId = "app_test_id",Enabled = true,AccessTokenType = AccessTokenType.Reference,Flow = Flows.ClientCredentials,ClientSecrets = new List<Secret>{new Secret("F621F470-9731-4A25-80EF-67A6F7C5F4B8".Sha256())},AllowedScopes = new List<string>{"user","order"}},// human is involvednew Client{ClientName = "username client",ClientId = "irving",Enabled = true,AccessTokenType = AccessTokenType.Reference,Flow = Flows.ResourceOwner,ClientSecrets = new List<Secret>{new Secret("21B5F798-BE55-42BC-8AA8-0025B903DC3B".Sha256())},AllowedScopes = new List<string>{"user","order"}}};}}

用戶

public class Users{public static List<InMemoryUser> Get(){return new List<InMemoryUser>{new InMemoryUser{Username = "irving",Password = "123456",Subject = "1",Claims = new[]{new Claim(Constants.ClaimTypes.GivenName, "Bob"),new Claim(Constants.ClaimTypes.FamilyName, "Smith")}},new InMemoryUser{Username = "bob",Password = "secret",Subject = "2"},new InMemoryUser{Username = "alice",Password = "secret",Subject = "3"}};}}

服務端配置

public class Startup{/// <summary>/// 配置idsv授權(quán)服務/// </summary>/// <param name="app"></param>public void Configuration(IAppBuilder app){var opts = new IdentityServerOptions{SiteName = "Embedded Homeinns PMS 2.0 OAuth2 Service",EnableWelcomePage = true,Factory = new IdentityServerServiceFactory().UseInMemoryClients(Clients.Get()).UseInMemoryScopes(Scopes.Get())//.UseInMemoryUsers(new List<InMemoryUser>()), .UseInMemoryUsers(Users.Get()),RequireSsl = false,//SigningCertificate = new X509Certificate2(string.Format(@"{0}\bin\identityServer\idsrv3test.pfx", AppDomain.CurrentDomain.BaseDirectory), "idsrv3test") };app.UseIdentityServer(opts);/*//自定義路由app.Map("/identity", idsrvApp =>{idsrvApp.UseIdentityServer(opts);});*/}

控制器

[Route("api/v1/values")]public class ValuesController : ApiController{public IHttpActionResult Get(){var caller = User as ClaimsPrincipal;var subjectClaim = caller.FindFirst("sub");if (subjectClaim != null){return Json(new{message = "OK user",client = caller.FindFirst("client_id").Value,subject = subjectClaim.Value});}else{return Json(new{message = "OK computer",client = caller.FindFirst("client_id").Value});}}}

控制臺

class Program{static void Main(string[] args){/*POST http://192.168.210.165/connect/token HTTP/1.1Accept: application/jsonAuthorization: Basic YXBwX3Rlc3RfaWQ6RjYyMUY0NzAtOTczMS00QTI1LTgwRUYtNjdBNkY3QzVGNEI4Content-Type: application/x-www-form-urlencodedHost: 192.168.210.165Content-Length: 40Expect: 100-continueConnection: Keep-Alivegrant_type=client_credentials&scope=user*//*GET http://192.168.210.165:88/api/v1/values HTTP/1.1Authorization: Bearer 9f82476751e1f8b93f1ea6df7de83b51Host: 192.168.210.165:88*/var log = new LoggerConfiguration().WriteTo.LiterateConsole(outputTemplate: "{Timestamp:HH:mm} [{Level}] ({Name:l}){NewLine} {Message}{NewLine}{Exception}").CreateLogger();//ClientCredentialsvar token = new TokenClient("http://192.168.210.165/connect/token","app_test_id","F621F470-9731-4A25-80EF-67A6F7C5F4B8");var response = token.RequestClientCredentialsAsync("user").Result;var client = new HttpClient();client.SetBearerToken(response.AccessToken);log.Information(client.GetStringAsync("http://192.168.210.165:88/api/v1/values").Result);//ResourceOwner var resourceOwnerClient = new TokenClient("http://192.168.210.165/connect/token","irving","21B5F798-BE55-42BC-8AA8-0025B903DC3B");var data = resourceOwnerClient.RequestResourceOwnerPasswordAsync("irving", "123456", "order").Result;client.SetBearerToken(data.AccessToken);log.Information(client.GetStringAsync("http://192.168.210.165:88/api/v1/values").Result);Console.ReadKey();}} }

總結(jié)

以上是生活随笔為你收集整理的基于 IdentityServer3 实现 OAuth 2.0 授权服务【密码模式(Resource Owner Password Credentials)】...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩一区二区三区不卡视频 | 中文字幕无码不卡免费视频 | 极品人妻videosss人妻 | 亚洲我射 | 成年人性视频 | 亚洲污视频 | 成人久久久久久久 | 毛片日韩 | 日本精品久久久久久久 | 欧美日本色图 | 国产一区成人 | 亚洲国产综合av | 自拍偷拍国产精品 | 久久久激情网 | 欧美一级做a爰片免费视频 成人激情在线观看 | 一区二区三区日韩在线 | 长篇高h乱肉辣文 | 裸体视频软件 | 亚洲一区二区三区 | 日本少妇做爰全过程毛片 | 亚洲夜夜操 | 嫩草嫩草嫩草 | 日韩美女中文字幕 | 久久精品色妇熟妇丰满人妻 | 欧美一区二区三区的 | 中文在线最新版天堂8 | 激情中文网 | 东北少妇不带套对白 | 精品国产露脸精彩对白 | 免费看日批 | 秋霞国产精品 | 两个人看的www视频免费完整版 | 嫩草网站在线观看 | 亚洲精品国产免费 | 激情一级片 | 狠狠综合网 | 91视频网| 欧洲国产精品 | 美女视频黄色 | 国产精品69久久久久孕妇欧美 | 岛国av噜噜噜久久久狠狠av | 美色视频 | 在线精品视频播放 | 三级亚洲欧美 | 成人免费网视频 | 青青草在线播放 | 国产91在线 | 亚洲 | 九九热视频在线播放 | 国产人妖ts重口系列网站观看 | 阿v视频在线免费观看 | 国产九九| 午夜在线观看av | av美女网站 | 日本不卡高字幕在线2019 | 久久黄色一级 | 亚洲福利 | 黑人一级视频 | 日本高清免费不卡视频 | av在线不卡免费 | 日韩av线观看 | 亚洲国产精品999 | 少妇丰满尤物大尺度写真 | 欧美黄色激情视频 | brazzers猛女系列 | 色吧综合网| 日本特级淫片 | 色综合一区 | 在线成人av网站 | 无码人妻aⅴ一区二区三区玉蒲团 | 亚洲欧美在线播放 | 国产1级片 | 中文字幕三区 | 亚洲av无码一区二区三区在线 | 操人在线观看 | 三上悠亚人妻中文字幕在线 | 天堂网2018 | 天堂伊人网 | 黄网站在线播放 | 51妺嘿嘿午夜福利 | av中文字幕免费 | 人人干干人人 | 成人三级黄色片 | 国产精品99精品 | 国产成人免费电影 | 色婷婷久久 | 欧美精品久久久久久久免费 | 欧美日韩一区二区综合 | www.555国产精品免费 | 97影院手机版| 精品国模一区二区三区 | 国产精品无码永久免费不卡 | 中文字幕日韩欧美 | 天天天天躁天天爱天天碰2018 | 久久中文字幕高清 | 欧美日韩在线第一页 | 欧美日韩网站 | 乌克兰少妇性做爰 | 91草草草| 亚洲欧美小视频 |