首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何设置oidc ResponseType以同时获取claims和access_token?

如何设置oidc ResponseType以同时获取claims和access_token?
EN

Stack Overflow用户
提问于 2019-03-12 07:11:45
回答 2查看 954关注 0票数 1

最近我正在使用IdentityServer4进行单点登录,当我调试代码时,我发现ResponseType设置导致了一个棘手的问题。当我这样设置我的客户端时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
        services.AddAuthentication(options =>
        {
            options.DefaultScheme = "Cookies";
            options.DefaultChallengeScheme = "oidc";
        })
            .AddCookie("Cookies")
            .AddOpenIdConnect("oidc", options =>
            {
                options.SignInScheme = "Cookies";
                options.Authority = Configuration["Auth:IdentityServer"];
                options.RequireHttpsMetadata = false;

                options.ClientId = Configuration["Auth:ClientId"];
                options.ClientSecret = Configuration["Auth:ClientSecret"];
                options.ResponseType = "id_token";
                options.SaveTokens = true;
                //options.Scope.Add("8e6144b5-87f6-4638-bf08-1a64599a8b39");
                options.Scope.Add("offline_access");
                options.GetClaimsFromUserInfoEndpoint = true;
            });

我可以像这样获得索赔(带有完整的索赔列表):

但是,当我像这样修改responseType时,options.ResponseType = "id_token token";的声明是这样的(只发出了少量声明):

如果我想在用户登录时同时获得完整的声明列表和访问令牌,我应该怎么做才能同时获得它们?

EN

回答 2

Stack Overflow用户

发布于 2019-03-13 11:57:06

默认情况下,如果访问令牌随访问令牌一起请求,IdentityServer将不会在身份令牌中提供用户声明。您可以在源代码here中看到这一点。要确保身份令牌始终包含用户声明(无论是否使用它请求访问令牌),需要在客户机上将AlwaysIncludeUserClaimsInIdToken设置为true

票数 1
EN

Stack Overflow用户

发布于 2019-03-12 15:24:20

我看到您正在尝试使用文档中的一个示例。如果我错了,请纠正我。

如果不是,则将您的流更改为混合(这意味着ResponseType = "code id_token token")。在身份服务器端也要这样做。在作用域中还要添加openidprofile。然后,在列出索赔的地方,您可以使用(假设您正在使用razor页面列出它们):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@foreach (var claim in ((System.Security.Claims.ClaimsPrincipal)User).Claims)
{
    <li>@claim.Type : @claim.Value</li>
}

这应该列出您拥有的所有声明(包括access_token本身)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55115909

复制
相关文章
.NET Core微服务之基于IdentityServer建立授权与验证服务(续)
上一篇我们基于IdentityServer4建立了一个AuthorizationServer,并且继承了QuickStartUI,能够成功获取Token了。这一篇我们了解下如何集成API Service和MVC Web Application。
Edison Zhou
2018/08/07
1.9K0
.NET Core微服务之基于IdentityServer建立授权与验证服务(续)
使用Identity Server 4建立Authorization Server (3)
上一部分简单的弄了个web api 并通过Client_Credentials和ResourceOwnerPassword两种方式获取token然后进行api请求. 这次讲一下Authenticati
solenovex
2018/03/01
1.3K0
使用Identity Server 4建立Authorization Server (3)
使用Identity Server 4建立Authorization Server (4)
上一篇讲了使用OpenId Connect进行Authentication. 下面讲 Hybrid Flow和Offline Access 目前我们解决方案里面有三个项目 Authorization Server, Web api和Mvc Client. 在现实世界中, 他们可能都在不同的地方. 现在让我们从MvcClient使用从Authorization Server获取的token来访问web api. 并且确保这个token不过期. 现在我们的mvcClient使用的是implicit flow,
solenovex
2018/03/01
1.5K0
使用Identity Server 4建立Authorization Server (4)
【One by One系列】IdentityServer4(四)授权码流程
接下来我们介绍新内容,OAuth2.0叫做授权码(authorization code),在OpenID Connect中则属于OpenId Connect Flow,称为授权码流程(Authorization Code Flow),这种方式主要场景:
DDGarfield
2022/06/23
2K0
【One by One系列】IdentityServer4(四)授权码流程
ASP.NET_.NET
我们在《ASP.NET Core项目实战的课程》第一章里面给identity server4做了一个全面的介绍和示例的练习 。
全栈程序员站长
2022/11/03
1.6K0
Open ID Connect(OIDC)在 ASP.NET Core中的应用
我们在《ASP.NET Core项目实战的课程》第一章里面给identity server4做了一个全面的介绍和示例的练习 ,这篇文章是根据大家对OIDC遇到的一些常见问题整理得出。 本文将涉及到以下几个话题: 什么是OpenId Connect (OIDC) OIDC 对oAuth进行了哪些扩展? Identity Server4提供的OIDC认证服务(服务端) ASP.NET Core的权限体系中的OIDC认证框架(客户端) 什么是 OIDC 在了解OIDC之前,我们先看一个很常
用户1153966
2018/03/14
2.6K0
Open ID Connect(OIDC)在 ASP.NET Core中的应用
构建具有用户身份认证的 Ionic 应用
使用 Okta 和 OpenID Connect (OIDC),可以很轻松的在 Ionic 应用中添加身份认证,完全不需要自己实现。 OIDC 允许你直接使用 Okta Platform API 进行认证,本文的目的就是告诉你如何在一个 Ionic 应用中使用这些 API。我将演示如何使用 OIDC 重定向、Okta 的 Auth SDK 以及基于 Cordova 内嵌浏览器的 OAuth 进行登录; 由于功能还在开发中,所以省略了用户注册。
叙帝利
2018/07/31
23.8K0
构建具有用户身份认证的 Ionic 应用
构建具有用户身份认证的 Ionic 应用
序言:本文主要介绍了使用 Ionic 和 Cordova 开发混合应用时如何添加用户身份认证。教程简易,对于 Ionic 入门学习有一定帮助。因为文章是去年发表,所以教程内关于 Okta 的一些使用步骤不太准确,但是通过 Okta 的官网也可以找到对应的内容。另外,使用 npm 安装 Ionic starter 模板可能会有安装失败的情况,建议不要在这方面浪费太多时间,可以直接在 Ionic 的 GitHub 仓库 中下载 starter 模板。 原文:How to Sprinkle ReactJS i
叙帝利
2018/05/28
23.3K0
IdentityServer4学习及简单使用
要学习IdentityServer,需要了解下基于Token的验证体系,其中涉及到Token, OAuth&OpenID,JWT,协议规范等。
Vincent-yuan
2019/09/10
1.5K0
IdentityServer4学习及简单使用
Blazor.Server以正确的方式 丶集成Ids4
我本来是想通过像vue框架那样,通过引oidc-client.js的方式,来实现Ids4的集成问题,我当时以为已经很好的,后来看了张队发的文章以后,发现好像我写的那种方式并不优雅。
老张的哲学
2022/04/11
1.6K0
Blazor.Server以正确的方式 丶集成Ids4
OAuth2.0 OpenID Connect 一
一开始,有一些专有方法可以与外部身份提供者合作进行身份验证和授权。然后是 SAML(安全断言标记语言)——一种使用 XML 作为其消息交换类型的开放标准。然后,出现了 OAuth 和 OAuth 2.0——同样是开放的,也是一种使用 JSON 作为媒介的现代 RESTful 授权方法。现在,“安全委托访问”的圣杯 OpenID Connect(以下简称 OIDC)运行在 OAuth 2.0 之上。
用户1418987
2023/10/16
4840
OAuth2.0 OpenID Connect 一
IdentityServer(11)- 使用Hybrid Flow并添加API访问控制
关于Hybrid Flow 和 implicit flow 我在前一篇文章使用OpenID Connect添加用户认证中提到了implicit flow,那么它们是什么呢,它和Hybrid Flow有什么不同呢,这里简单讲一下。 Hybrid Flow 和 implicit flow是OIDC(OpenID Connect)协议中的术语,Implicit Flow是指使用OAuth2的Implicit流程获取Id Token和Access Token;Hybrid Flow是指混合Authorization
晓晨
2018/06/22
1.2K0
关于axios 的responseType类型的设置
axios请求下载导出一个文件,请求成功时返回的是一个流形式的文件,需要设置responseType: 'arraybuffer',但是请求失败的需要返回的是json数据,
小蔚
2022/05/09
2.8K0
关于axios 的responseType类型的设置
使用Identity Server 4建立Authorization Server (6) - js(angular5) 客户端
由于手头目前用项目, 所以与前几篇文章不同, 这次要讲的js客户端这部分是通过我刚刚开发的真是项目的代码来讲解的. 这是后端的代码: https://github.com/solenovex/asp.net-core-2.0-web-api-boilerplate 这里面有几个dbcontext, 需要分别对Identity Server和Sales.DataContext进行update-database, 如果使用的是Package Manager Console的话. 进行update-databas
solenovex
2018/03/01
5.7K0
使用Identity Server 4建立Authorization Server (6) - js(angular5) 客户端
《ASP.NET Core 微服务实战》-- 读书笔记(第10章)
云应用意味着应用运行所在的基础设施无法掌控,因此安全不能再等到事后再考虑,也不能只是检查清单上毫无意义的复选框
郑子铭
2021/01/13
1.8K0
《ASP.NET Core 微服务实战》-- 读书笔记(第10章)
从壹开始前后端分离【 .NET Core2.2 +Vue2.0 】框架之五 || Swagger的使用 3.3 JWT权限验证
本文章不仅在Blog.Core 框架里有代码,而且我也单写了一个关于 JWT 的小demo,在文章末,大家可以下载看看。
老张的哲学
2022/04/10
2K0
从壹开始前后端分离【 .NET Core2.2 +Vue2.0 】框架之五 || Swagger的使用 3.3 JWT权限验证
[认证授权] 4.OIDC(OpenId Connect)身份认证授权(核心部分)
1 什么是OIDC? 看一下官方的介绍(http://openid.net/connect/): OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server, as
blackheart
2018/01/19
4.5K0
[认证授权] 4.OIDC(OpenId Connect)身份认证授权(核心部分)
IdentityServer4入门
IdentityServer4是用于ASP.NET Core的OpenID Connect和OAuth 2.0框架。
鱼找水需要时间
2023/02/16
7.8K0
【实战 Ids4】║ 又一个项目迁移完成(MVC)
上边共涉及到了我开源的六个项目,三个后端,三个前端,想想这一年也是够可以了,但是在迁移的IdentityServer4中,只用到了常用的两种模式,Implicit和Code模式,其实一般我们web开发,掌握四种就行,除了这两个,还有Hybrid和Client,其他的如果没有精力,可以放一放,那下边我们就快速的说一下如何将MVC项目迁移到Ids4上。这里就简单的说一下操作过程,不会讲解原理,原理我会在视频教程中,详细说到。
老张的哲学
2022/04/11
6890
【实战 Ids4】║ 又一个项目迁移完成(MVC)
OIDC认证授权的核心知识——高级开发必备
OIDC是在OAuth2的基础上做了一个身份认证层,以便于客户端知晓授权的终端用户(End User),在客户端获取access_token的同时一并提供了一个用户的身份认证信息Id Token。广泛用于微服务、开放平台、SSO、三方登录授权等场景。
码农小胖哥
2022/09/30
5.5K0
OIDC认证授权的核心知识——高级开发必备

相似问题

angular-oauth2-oidc未设置access_token

11

如何在节点OIDC提供程序中使用令牌端点获取access_token

12

如何在azure函数中获取AccessToken和claims

242

发送responseType = ' id_token‘时,在OIDC中获取id_token为null

13

如何通过express使用node-oidc-provider access_token?

119
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文