分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

IdentityServer4在Asp.Net Core中的应用(二)

发布时间:2023-09-06 01:47责任编辑:蔡小小关键词:暂无标签

    继续上次授权的内容,客户端模式后我们再说以下密码模式,先回顾下密码模式的流程:

我们还是使用上次的代码,在那基础上修改,在IdentityServer4里面有一个IdentityServer4.Test的引用,它里面包含了测试用户的类,我们先将这个引用添加进来,并配置我们的用户信息,修改Config类,添加一个GetTestUsers()方法,当然在实际项目中,我们需要去从我们的数据库中去读取用户名及密码等信息,这里只做测试,添加内容如下:

我们再添加一个客户端,更改其授权模式为密码模式,内容如下:

修改其授权模式为ResourceOwnerPassword,下面再将我们的用户依赖注入到系统中,

至此我们的授权服务器已经修改完成,我们通过Postman测试是否可以拿到我们的access_token

OK,测试成功。我们的Api是不需要改动的,下面我们再新创建一个第三方应用程序,去请求授权并获取资源,代码如下

using System;using System.Net.Http;using IdentityModel;using IdentityModel.Client;namespace ThirdPartyAppByPwd{ ???class Program ???{ ???????static void Main(string[] args) ???????{ ???????????//请求授权服务器 ???????????var diso=DiscoveryClient.GetAsync("http://localhost:5000").Result; ???????????if(diso.IsError) ???????????{ ???????????????Console.WriteLine(diso.Error); ???????????} ???????????//授权服务器根据客户端发来的请求返回令牌 ???????????var tokenClient=new TokenClient(diso.TokenEndpoint,"pwdClient","pwdSecrect"); ???????????//使用密码模式 ???????????var tokenResponse =tokenClient.RequestResourceOwnerPasswordAsync("allen","123456","api").Result; ???????????if(tokenResponse.IsError) ???????????{ ???????????????Console.WriteLine(tokenResponse.Error); ???????????} ???????????//如果成功,则打印输出返回的令牌信息 ???????????else ???????????{ ???????????????Console.WriteLine(tokenResponse.Json); ???????????} ???????????//创建HttpClient对象 ???????????var httpClient=new HttpClient(); ???????????//设置Authorization的Value值 ???????????httpClient.SetBearerToken(tokenResponse.AccessToken); ???????????//根据授权服务器返回的令牌信息请求Api资源 ???????????var response= httpClient.GetAsync("http://localhost:5001/api/values").Result; ???????????//如果返回结果为成功,输出Api资源的结果 ???????????if(response.IsSuccessStatusCode) ???????????{ ???????????????Console.WriteLine(response.Content.ReadAsStringAsync().Result); ???????????} ???????} ???}}

只改动了两个地方,把ClientID和ClientSecret的值修改了,以及请求授权服务器的方法改为: 

RequestResourceOwnerPasswordAsync(username,password,scope),运行结果如下:

以上就是完整的密码模式的授权,下面是对以上的简化流程:

扫描二维码关注我的公众号,共同学习,共同进步!

IdentityServer4在Asp.Net Core中的应用(二)

原文地址:https://www.cnblogs.com/Allen0910/p/8663655.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved