日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本三不卡 | 不卡中文字幕 | 泰国午夜理伦三级 | 97精品一区二区三区 | av老司机久久 | av青草 | 国产xxxxxxxxx| 午夜精品一区二区三 | 深夜福利久久 | 中文字幕在线一区二区三区 | 超碰caoprom| 综合色伊人 | 日本高清不卡一区 | 痴汉电车在线播放 | 日韩av网站大全 | √天堂| 亚洲精品动漫在线观看 | 成年人三级网站 | 国产在线视频你懂的 | 中文字幕欧美色图 | 日本a v在线播放 | 久久精品国产亚洲AV无码男同 | 天堂中文在线观看 | 黄色大网站 | 一区二区三区日 | 高h在线观看 | 天堂а√在线中文在线 | 久久久久久久久久久久久国产 | 尤物国产| 成人在线一区二区 | 在线观看av一区二区 | 国产极品视频在线观看 | 国产真人无遮挡作爱免费视频 | 国产成人无码精品久久久久久 | 草草视频在线观看 | 2021国产在线视频 | 翔田千里在线播放 | 干日本少妇首页 | 人人爽人人爽人人片 | 亚洲激情视频在线观看 | 国产精品v亚洲精品v日韩精品 | 国产精品探花视频 | 国产农村妇女毛片精品 | 亚洲性网 | 九九热播视频 | 成人夜晚视频 | 第四色成人网 | 亚洲综合五月天婷婷丁香 | 美女被出白浆 | 一区视频免费观看 | 六月综合网 | 熊出没之冬日乐翻天免费高清观看 | 91网址入口 | 农村一级毛片 | 国产免费中文字幕 | 极品美妇后花庭翘臀娇吟小说 | 国产aa毛片 | 亚洲成熟毛多妇女av毛片 | 一区二区成人在线 | 国产精品视频免费网站 | 一级香蕉视频在线观看 | 国产片一区二区三区 | 中文久久久久 | 欧美a级在线免费观看 | 在线看片你懂的 | 久久精品久久精品久久 | 午夜亚洲国产 | 91性色| 完全免费av | 青青草福利 | 国产精品一区二区三区免费视频 | 大尺度做爰呻吟舌吻网站 | 韩国伦理片在线播放 | 天天干天天天天 | 欧美一级片在线观看 | 久久久久噜噜噜亚洲熟女综合 | 国产卡一卡二卡三 | 被两个男人吃奶三p爽文 | 红桃视频在线播放 | 久久久婷 | 国产午夜手机精彩视频 | 国模私拍一区二区 | 色婷婷导航| 天天视频色| 国产精品久久久久久久久久东京 | 丰满肥臀噗嗤啊x99av | 超碰在线图片 | 精品国产亚洲一区二区麻豆 | 欧美亚洲国产一区二区三区 | 又欲又污又肉又黄短文 | 精品国产视频一区二区 | 91中文字幕视频 | 夜夜操夜夜操 | 一级片在线免费观看视频 | sese在线视频 | 涩涩涩涩涩涩涩涩涩涩 | 麻豆高清 | 一节黄色片 | 欧洲影院 |