首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在IdentityServer4 (asp.net核心)的token验证阶段获取原始请求头?

在IdentityServer4 (asp.net核心)的token验证阶段获取原始请求头,可以通过自定义实现IProfileService接口来获取原始请求头。

首先,需要创建一个类来实现IProfileService接口,并在其中实现GetProfileDataAsync方法。在该方法中,可以通过HttpContext对象获取原始请求头信息。

代码语言:txt
复制
using IdentityServer4.Extensions;
using IdentityServer4.Models;
using IdentityServer4.Services;
using Microsoft.AspNetCore.Http;
using System.Collections.Generic;
using System.Security.Claims;
using System.Threading.Tasks;

public class CustomProfileService : IProfileService
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public CustomProfileService(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }

    public async Task GetProfileDataAsync(ProfileDataRequestContext context)
    {
        // 获取原始请求头
        var headers = _httpContextAccessor.HttpContext.Request.Headers;

        // 将原始请求头添加到用户的Claims中
        var claims = new List<Claim>();
        foreach (var header in headers)
        {
            claims.Add(new Claim(header.Key, header.Value));
        }

        context.IssuedClaims.AddRange(claims);
    }

    public async Task IsActiveAsync(IsActiveContext context)
    {
        context.IsActive = true;
    }
}

然后,在Startup.cs文件的ConfigureServices方法中注册CustomProfileService类:

代码语言:txt
复制
services.AddTransient<IProfileService, CustomProfileService>();

这样,在IdentityServer4的token验证阶段,就可以通过HttpContext对象获取原始请求头信息,并将其添加到用户的Claims中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

eShopOnContainers 知多少:Identity microservice

(这就要求提供一种安全机制来认证请求是来自于网关。) ? 基于安全令牌服务(STS)认证:所有的客户端先从STS获取令牌,然后请求时携带令牌完成认证。 ?...而如何实现呢,借助: ASP.NET Core Identity IdentityServer4 基于Cookie认证和基于Token认证差别如下所示: ?...核心技术选型: MVC单层架构 EF Core ASP.NET Core Identity IdentityServer4 SQL Server 数据库 Autofac PS:对ASP.NET Core...IdentityServer4ASP.NET Core Identity基础上,提供令牌颁发验证等。...在认证阶段我们通过用户信息获取到用户Claims,而授权便是对这些Claims验证:是否拥有Admin角色,姓名是否叫XXX等等。

2.8K20

Asp.Net Core 中IdentityServer4 实战之角色授权详解

IdentityServer4 历史文章目录 Asp.Net Core IdentityServer4基本概念 Asp.Net Core 中IdentityServer4 授权中心之应用实战 Asp.Net...Core 中IdentityServer4 授权中心之自定义授权模式 Asp.Net Core 中IdentityServer4 授权原理及刷新Token应用 Asp.Net Core 中IdentityServer4...第三步:客户端携带拿到access_token尝试请求数据网关(API资源)。 第四步:数据网关收到客户端第一次请求会到授权中心请求获得验证公钥。...第六步:数据网关(ids4)通过验证网关验证access_token是否验证通过,并且验证请求客户端用户声明Role是否和请求API资源约定角色一致。...先来通过普通用户(testNormal)请求授权中心获得access_token,如下图: 请求验证通过, 再来通过获取access_token 获取普通接口: 也完美获取到数据 再来访问下标注了

51020
  • 【One by One系列】IdentityServer4(二)使用Client Credentials保护API资源

    IdentityServer4是实现了OAuth2.0+OpenId Connect两种协议优秀第三方库,属于.net生态中优秀成员。可以很容易集成至ASP.NET Core,颁发token。...协议描述端点(/connect/token)请求提供服务。...用于签名凭据(credentials) 用户可能会请求访问Identity资源和API资源 会请求获取token客户端 用户信息存储机制,ASP.NET Core Identity或者其他机制...access token 这一步,使用从discovery document中获取信息,向IdentityServer请求一个访问api1token: // request token var tokenResponse...4.5 编码-调用api 在这一步,使用扩展方法SetBearerToken,这个方法主要组装http请求:授权+access token,并以此请求访问api资源: // call api var

    2.3K30

    IdentityServer4 知多少

    IdentityServer4就是这样一个框架,IdentityServer4是为ASP.NET CORE量身定制实现了OpenId Connect和OAuth2.0协议认证授权中间件。...Web、移动、JavaScript在内所有客户端类型去请求和接收终端用户信息和身份认证会话信息;它是可扩展协议,允许你使用某些可选功能,身份数据加密、OpenID提供商发现、会话管理等。...HTTP身份验证流程 HTTP提供了一套标准身份验证框架:服务器可以用来针对客户端请求发送质询(challenge),客户端根据质询提供身份验证凭证。...然后客户端可以在请求中添加Authorization进行验证,其Value为身份验证凭证信息。...Bearer认证(也叫做令牌认证)是一种HTTP认证方案,其中包含安全令牌叫做Bearer Token。因此Bearer认证核心Token。那如何确保Token安全是重中之重。

    3K20

    Asp.Net Core 中IdentityServer4 授权流程及刷新Token

    一、前言 上面分享了IdentityServer4 两篇系列文章,核心主题主要是密码授权模式及自定义授权模式,但是仅仅是分享了这两种模式使用,这篇文章进一步来分享IdentityServer4授权流程及...系列文章目录(没看过先看这几篇文章再来阅读本文章): Asp.Net Core IdentityServer4基本概念 Asp.Net Core 中IdentityServer4 授权中心之应用实战...二、授权流程 2.1 客户端验证流程图 流程图中,客户端仅仅会到授权中心 请求一次,并拿到验证公钥返回给Api资源拥有端,后面客户端再次尝试请求Api资源时候就不会再到授权中心去获取验证公钥,会直接用之前获取公钥进行验证...,整体流程图如下: 客户端携带上一次获取access_token 请求受保护Api资源时,通过公钥进行验证时发现access_token已经过期,则客户端再携带refresh_token 向授权中心再次发起请求...服务网关)获取验证公钥,并保持到内存中,后面的请求不会再到授权中心去获得验证公钥,而是Api资源网关(受保护资源)中直接通过保存下来验证公钥进行验证,从而通过授权。

    2K20

    .NET Core微服务之基于IdentityServer建立授权与验证服务

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一、IdentityServer预备知识   要学习IdentityServer,事先得了解一下基于Token验证体系,这是一个庞大主题...,涉及到Token,OAuth&OpenID,JWT,协议规范等等等等,园子里已经有很多介绍文章了,个人觉得solenovex这一篇文章《学习IdentityServer4预备知识》言简意赅,可以快速看看...Server为其发放了一个token,而这个token就好比是把家里钥匙配了一把(clone)新,此后该User就可以访问API请求获取Orders(订单)数据了。...二、IdentityServer极简介绍   IdentityServer4(这里只使用版本号为4)是一个基于OpenID Connect和OAuth 2.0针对ASP.NET Core 2.0框架...(这里输入了一个不在定义列表中client_id)   Step4.查看控制台日志信息:表示获取Token这个请求成功了,日志中client_secret和password都是不会直接明文显示

    1.7K60

    Asp.Net Core 中IdentityServer4 实战之 Claim详解

    世界 Asp.Net Core IdentityServer4基本概念 Asp.Net Core 中IdentityServer4 授权中心之应用实战 Asp.Net Core 中IdentityServer4...授权中心之自定义授权模式 Asp.Net Core 中IdentityServer4 授权原理及刷新Token应用 二、Claim 是什么 Claim Claim 我理解是一个声明,存储着一个键值对关系...我们先在授权中心(ids4)服务中验证用户代码中添加用户相关Claims,核心代码如下:不熟悉请先移步Asp.Net Core 中IdentityServer4 授权中心之应用实战 这篇文章 public...User; //其他核心代码没有贴出来,具体可以看官方源代码 } 看了源代码,我们是不是可以考虑使用User来获取身份证件中某些身份元件呢?...access_token 成功,我再携带access_token访问 用户业务网关,如下图: 成功获取到用户身份信息 Claims相关信息。

    1.3K20

    Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码)

    为了演示方便,本文采用是客户端认证模式,至于其他几种验证模式,大家可以看下上面给出阮一峰文章。...如果不清楚的话可以参考晓晨Master这篇“ASP.NET Core身份认证框架IdentityServer4(3)-术语解释”文章。...如下图所示,在Post请求中传入,认证类型,client_id以及client_secret即可获取AccessToken: ? 当传入错误Client_id或者密码将出现下面的结果 ?...类型,获取access_token时候返回参数中token_type一致 /// public string IdentityScheme {...在请求头上加入我们获取token信息,来再次访问下: ? ? Asp.Net Core Web Api图片上传接口集成Identity Server 4安全认证实例教程到此结束了。

    94240

    Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码)

    为了演示方便,本文采用是客户端认证模式,至于其他几种验证模式,大家可以看下上面给出阮一峰文章。...如果不清楚的话可以参考晓晨Master这篇“ASP.NET Core身份认证框架IdentityServer4(3)-术语解释”文章。...如下图所示,在Post请求中传入,认证类型,client_id以及client_secret即可获取AccessToken: ? 当传入错误Client_id或者密码将出现下面的结果 ?...类型,获取access_token时候返回参数中token_type一致 /// public string IdentityScheme {...在请求头上加入我们获取token信息,来再次访问下: ? ? Asp.Net Core Web Api图片上传接口集成Identity Server 4安全认证实例教程到此结束了。

    1K10

    IdentityServer4实战 - JWT Token Issuer 详解

    众所周知 JWT Token 由三部分组成,第一部分 Header,包含 keyid、签名算法、Token类型;第二部分 Payload 包含 Token 信息主体,授权时间、过期时间、颁发者、身份唯一标识等等...在 Token 验证过程中,会将它作为验证一个阶段,如无法匹配将会造成验证失败,最后返回 HTTP 401。 三....Issuer 验证流程分析 JWT验证是去中心化验证,实际这个验证过程是发生在API资源,除了必要IdentityServer4 获取元数据(获取后会缓存,不用重复获取)比如获取公钥用于验证签名...请求从认证中间件到最终验证 Issuer 逻辑如下图(懒得画流程图了,直接做个gif)。...,如果直接通过外网请求 Token Endpoint(/connect/token) 生成 Token,那么这个 Token 携带 iss 地址将会是外网地址(正常情况下,Host是会经过代理传过来

    2K21

    .NET Core微服务之基于IdentityServer建立授权与验证服务(续)

    token进行Authorization,如果没有token或者token是非法,它就会告诉api消费者这个请求时未授权(HTTP StatusCode 401) 1.4 简单测试一下   测试之前首先确保...(1)不带token情况   (2)带正确token情况   首先请求获取一下token:这里我们使用grant_type是client_credentials,也可以使用password(需要输入用户名和密码...  我们也可以通过在ValuesController中加上如下一句,来获取Claims => 它是从已验证token中抽取信息。...如果我们将上面获取tokengrant_type设置为password的话,那我们会在Claims中获取到用户ID信息。...值得一提是这里ResponseType为"id_token token",表示既获取id_token获取access_token

    1.8K50

    Ocelot(四)- 认证与授权

    在这里集成一套 .net core服务认证框架IdentityServer4,以及如何在Ocelot中接入IdentityServer4认证与授权。...IdentityServer4验证过程即可,因此,我选择了使用最简单客户端模式。...客户端需要先想IdentityServer请求认证,获得一个Token,然后再带着这个Token向下游服务发出请求。 我尝试根据流程图搭建出这样认证服务。...其实熟悉Postman朋友可能就知道怎么一回事,Postman为了我们在使用过程中更加方便填入Token信息而单独列出了 Authorization,实际上,最终还是会转换加入到请求当中 这个请求...总结 在这篇文章中就跟大家介绍了基于IdentityServer4为认证服务器Ocelot认证与授权,主要是通过一些案例实践,让大家理解Ocelot对客户端身份验证过程,使用了IdentityServer

    2.1K20

    ABP从入门到精通(4):使用基于JWT标准Token访问WebApi

    项目:asp.net zero 4.2.0 .net core(1.1) 版本 我们做项目的时候可能会遇到需要提供api给app调用,ABP动态生成WebApi提供了方便基于JWT标准Token访问方式供我们访问...JWT声明一般被用来在身份提供者和服务提供者间传递被认证用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外其它业务逻辑所必须声明信息,该token也可直接被用于认证,也可被加密。...zero core是通过IdentityServer4来实现认证、授权,关于IdentityServer4介绍可以查看我前面的博文 ASP.NET Core身份认证服务框架IdentityServer4...三.申请Token http://localhost:4999 项目地址 ABP已经为我们实现好了Token获取验证。 需要注意是配置ServerRootAddress,如下图 ?...四.使用Token访问api 在请求头中加入 Authorization, 值为'Bearer ' + token 中间有个空格,请注意 ?

    2.6K30

    JWT已死,IdentityServer4当立?

    重组应用程序以支持安全令牌服务将会引导出以下体系结构和协议,这样设计将会把安全问题分为两个部分:(身份验证和API访问),而这些,依靠IdentityServer4(简称ID4)可以轻松做到。...IdentityServer4是什么? ID4是ASP.NET Core 2OpenID Connect和OAuth 2.0框架,可以做功能有SSO(单点登陆)、Api 控制、身份认证服务等。...它将规范兼容OpenID Connect和OAuth 2.0端点添加到任意ASP.NET Core应用程序中间件。...identityserver4特点 认证服务:可以为你应用(网站、本地应用、移动端、服务)做集中式登录逻辑和工作流控制。...单点登录登出(SSO):在各种类型应用上实现单点登录登出。 API访问控制:为各种各样客户端颁发access token令牌,服务与服务之间通讯、网站应用、SPAS和本地应用或者移动应用。

    1.9K20

    聊聊统一身份认证服务

    技术方案 IdentityServer4是基于ASP.NET CoreOpenID Connect和OAuth 2.0框架。...,以及获取基本用户信息;它支持包括Web、移动、JavaScript在内所有客户端类型去请求和接收终端用户信息和身份认证会话信息;它是可扩展协议,允许你使用某些可选功能,身份数据加密、OpenID...客户端(Client) 客户端是从IdentityServer请求令牌应用 - 用于验证用户(请求身份令牌)或访问资源(请求访问令牌)。...然后客户端可以在请求中添加Authorization进行验证,其Value为身份验证凭证信息。 ?...Bearer认证(也叫做令牌认证)是一种HTTP认证方案,其中包含安全令牌叫做Bearer Token。因此Bearer认证核心Token。那如何确保Token安全是重中之重。

    5.1K31

    【 .NET Core 3.0 】框架之五 || JWT权限验证

    1)客户端向授权服务系统发起请求,申请获取“令牌”。...---- 三、核心知识点梳理 1、Bearer认证 HTTP提供了一套标准身份验证框架:服务器可以用来针对客户端请求发送质询(challenge),客户端根据质询提供身份验证凭证。...然后客户端可以在请求中添加Authorization进行验证,其Value为身份验证凭证信息。...Bearer验证凭证称为BEARER_TOKEN,或者是access_token,它颁发和验证完全由我们自己应用程序来控制,而不依赖于系统和Web服务器,Bearer验证标准请求方式如下: Authorization...获取方式 JwtBearer认证中,默认是通过HttpAuthorization获取,这也是最推荐做法,但是在某些场景下,我们可能会使用Url或者是Cookie来传递Token,那要怎么来实现呢

    2.1K30
    领券