使用IdentityServer4实现一个简单的Oauth2客户端模式授权

原文:使用IdentityServer4实现一个简单的Oauth2客户端模式授权

1、首先新建一个webAPI项目做为IdentityServer的服务端,提供生成Token的服务,首先修改Startup.cs文件,如下图:

2、增加一个Config.cs文件,以便于提供资源和认证设置,如下图:

3、在Startup.cs文件中配置做初始化:

4、好了,我们把网站启动,然后我们访问http://localhost:5000/.well-known/openid-configuration(http://localhost:5000是我的程序启动地址,可以在Program.cs文件中自己配置。.well-known/openid-configuration是程序的默认配置地址)然后返回如下内容,表明我们服务端已经没有什么问题了。

5、然后我们再单独创建一个Webapi项目来实现调用IdentityServer端获取token实现资源的正常访问.首先设置启动地址:

6、设置API控制器授权特性:

7、设置启动配置选项:

8.我们先在Postman中用一个错误的token去访问,结果提示未授权。

9、通过访问IdentityServer提供的endpoint(步骤4图中有标记)地址来获取token,如下图:

10.通过获取的token,去访问被限制的资源(即步骤6图中标识的位置),返回成功,即访问成功:

附上通过第三方程序来调用token,然后携带token访问API的demo:

using System;
using System.Net.Http;
using IdentityModel.Client;
namespace identityServerClient
{
    class Program
    {
        static void Main(string[] args)
        {
            var discoveryClient=DiscoveryClient.GetAsync("http://localhost:5000").Result;
            if(discoveryClient.IsError)
            {
                Console.WriteLine("there are some errors");
            }
            var tokenClient=new TokenClient(discoveryClient.TokenEndpoint,"client","secret");
            var tokenResponse=tokenClient.RequestClientCredentialsAsync("api").Result;
            if(tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
            }
            else
            {
                Console.WriteLine(tokenResponse.Json);
            }
            var httpClient=new HttpClient();
            httpClient.SetBearerToken(tokenResponse.AccessToken);
            var response=httpClient.GetAsync("http://localhost:5001/api/values").Result;
            if(response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.Content.ReadAsStringAsync().Result);
            }
            Console.ReadLine();

            Console.WriteLine("Hello World!");
        }
    }
}

原文地址:https://www.cnblogs.com/lonelyxmas/p/10618814.html

时间: 2024-10-13 17:04:26

使用IdentityServer4实现一个简单的Oauth2客户端模式授权的相关文章

IdentityServer3——入门教程:创建简单的OAuth2.0服务器,客户端和API

本教程的目的在于创造尽可能简单的identityserver安装作为一个oauth2授权服务器.这应该能够让你了解一些基本功能和配置选项(完整的源代码可以发现在这里).在后面的文档中会介绍更多的高级功能.本教程包括: 创建一个自托管identityserver 设置为使用一个应用程序的帐户以及用户对通信应用的客户服务代表 注册一个API 请求访问令牌 调用API 验证一个访问令牌 创建一个授权服务器(IdentityServer3) 创建一个控制台应用程序,并且在程序包管理器控制台中输入 ins

Spring Security OAuth2 Demo —— 客户端模式(ClientCredentials)

前情回顾 前几节分享了OAuth2的流程与其它三种授权模式,这几种授权模式复杂程度由大至小:授权码模式 > 隐式授权模式 > 密码模式 > 客户端模式 本文要讲的是最后一种也是最简单的模式:客户端模式 其中客户端模式的流程是:客户端使用授权服器给的标识与secret访问资源服务器获取token 本文目标 编写与说明密码模式的Spring Security Oauth2的demo实现,让未了解过相关知识的读者对客户端模式授权流程有个更直观的概念 以下分成授权服务器与资源服务器分别进行解释,

由一个简单需求到Linux环境下的syslog、unix domain socket

本文记录了因为一个简单的日志需求,继而对linux环境下syslog.rsyslog.unix domain socket的学习.本文关注使用层面,并不涉及rsyslog的实现原理,感兴趣的读者可以参考rsyslog官网.另外,本文实验的环境实在debian8,如果是其他linux发行版本或者debian的其他版本,可能会稍微有些差异. 需求: 工作中有一个在Linux(debian8)环境下运行的服务器程序,用python语言实现,代码中有不同优先级的日志需要记录,开发的时候都是使用pytho

Oauth2.0认证---授权码模式

目录: 1.功能描述 2.客户端的授权模式 3.授权模式认证流程 4.代码实现 1.功能描述 OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(authorization layer)."客户端"不能直接登录"服务提供商",只能登录授权层,以此将用户与客户端区分开来. "客户端"登录授权层所用的令牌(token),与用户的密码不同.用户可以在登录的时候,指定授权层令牌的权限范围和有效期. 2.客

nodejs + jquery Mobile构建一个简单的移动web (客户端)

前面展示了使用nodejs技术和jqm来搭建一个简单的支持CRUD操作应用的服务端部分(参见:nodejs + jquery Mobile构建一个简单的移动web(服务端) ),服务端采用nodejs技术实现,使用了mongodb数据库和轻量级web开发框架expressJS, 路由使用restful风格,所以你也可以使用restify来开发. 客户端的实现主要通过ajax调用实现.使用jade模板引擎. 客户端主要包含两个文件:layout.jade和index.jade 1. layout.

用C++写一个简单的服务器和客户端

我们将创建一个服务器节点add_two_ints_server,它将会收到两个整数,并且返回它们的和.切换目录到之前建立的beginner_tutorials包下: cd ~/catkin_ws/src/beginner_tutorials 编辑src/add_two_ints_server.cpp文件: vim src/add_two_ints_server.cpp 也就是说我们写的客户点也是一个node节点,它的cpp和生成的可执行模块和前面的talker.listener是一样的,只不过他

Core篇——初探IdentityServer4(客户端模式,密码模式)

Core篇--初探IdentityServer4(客户端模式,密码模式) 目录 1.Oatuth2协议的客户端模式介绍2.IdentityServer4客户端模式实现3.Oatuth2协议的密码模式介绍4.IdentityServer4密码模式实现 Oatuth2协议的客户端模式介绍 Client Credentials Grant (客户端模式)是Oauth2.0协议中,四种模式自建单的一种.它由两部分构成,客户端和认证服务器.认证服务器确认客户端无误后返回一个token,客户端请求带着tok

微服务(入门四):identityServer的简单使用(客户端授权)

IdentityServer简介(摘自Identity官网) IdentityServer是将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET核心应用程序的中间件,通常,您构建(或重新使用)一个包含登录和注销页面的应用程序(可能还包括同意,具体取决于您的需要),IdentityServer中间件向其添加必要的协议头,以便客户端应用程序可以使用这些标准协议与之对话. 托管应用程序可以像您希望的那样复杂,但我们通常建议通过只包含与身份验证相关的UI来尽可能地保持

一个简单的税利计算器(网页版)

嗯嗯,做一个简单的网页版的税率计算器,功能比较简单,但是相对比较实用.因为参考了一些其他作品,所以在计算汇率的时候习惯性的是以美元做单位.具体的功能有着较为详细的标注.仅供大家学习参考下. <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>JavaScript Loan Calculator</title>