填充的用户中没有访问令牌(Claimsprincipal)

2023-12-22

我们使用 IdentityServer4 作为 IdentityServer,使用 IdentityServer3 作为客户端 (ASP.NET MVC 5)。

一切正常(用户/声明原则通过 OWIN 正确设置),但我无法从用户那里获取访​​问令牌。

我们使用的隐式客户端可以访问这些范围:openid, profile, testapi

启动.cs:

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
{
    Authority = identityServerUrl,
    RequiredScopes = new[] { "testapi" },
});
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = "Cookies",
});
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
    Authority = identityServerUrl,
    ClientId = "testclient",
    Scope = "openid profile testapi",
    RedirectUri = "http://localhost:49000/signin-oidc",
    ResponseType = "id_token token",
    SignInAsAuthenticationType = "Cookies",
});

检索访问令牌的代码(在控制器之一内):

var user = User as ClaimsPrincipal;
var token = user.FindFirst("access_token");

用户设置正确,但令牌为空。我猜这是我在startup.cs中缺少的某种选项,但是哪个?


我认为一个更简单的解决方案是使用已经可用的内容:

        var options = new IdentityServerBearerTokenAuthenticationOptions
        {
            Authority = authorityUrl,
            PreserveAccessToken = true,                
        };

然后,访问令牌可用作用户主体上的声明(名为“令牌”)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

填充的用户中没有访问令牌(Claimsprincipal) 的相关文章

随机推荐

  • .NET 4.0 内存映射文件性能

    我想知道是否有人尝试过新的 NET 4 0 内存映射文件功能 我知道它们和操作系统一样古老 但 NET 中的本机处理是新的 有没有人能够对此进行测试并谈论性能 我对二进制文件随机部分的访问时间 写入速度等非常感兴趣 与本机 WinAPI M
  • redux/react 应用程序中的状态有一个带有减速器名称的属性

    我正在使用 Redux 和 React 创建一个应用程序 我遇到了一个问题 我无法将状态映射到组件属性 因为状态有一个与我使用的减速器名称匹配的属性 根减速器是用以下命令创建的combineReducers method const roo
  • 以下代码中的运行时错误

    根据我的说法 以下代码应该成功运行 但在运行时失败 我不明白原因 void main int arr 5 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int m arr 0 int p m p p 1 pri
  • mochijson2 或 mochijson

    我正在使用 mochijson2 编码一些数据 但我发现它在字符串作为列表时表现得很奇怪 例子 mochijson2 编码 foo 91 102 44 111 44 111 93 其中 102 111 111 是编码为字符串的 f o o
  • 如何在 if 语句中检查 UILabel 的值是否大于 0? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何在 if 语句中检查 UILab
  • 将优惠券字段移至购物车总计

    我需要将优惠券字段和按钮移至购物车总计表 位于 继续结账 按钮上方 到目前为止 我移动了 php 文件中的部分代码 但 ajax 不起作用 因此没有应用折扣 Thanks 编辑 cart php 文件以删除输出优惠券代码的代码 然后编辑 c
  • 使用 oci_parse 和 oci_execute

    我确信这是非常基本的事情 但我似乎找不到我的错误 我正在尝试执行以下操作 c db connect email addslashes email sql SELECT FROM RUSER WHERE email LIKE email qu
  • 从应用程序中安装 .zip?

    因此 在我的应用程序中 我尝试使用此命令使其在发条恢复中闪烁 zip Runtime run Runtime getRuntime Process p null DataOutputStream out null try p run exe
  • 未处理异常时的 TPL 中断

    我在用async await也Task Factory StartNew在我的应用程序中 但我注意到发生变化的一件事是 当发生未处理的异常时 Visual Studio 不再中断 Here is what i mean by before
  • 在从 ReactiveMongoRepository 对象返回的 Mono 对象上执行 block() 时出现异常

    我有一个服务将数据流式传输到第二个服务 该服务接收对象流并将它们保存到我的 MongoDB 中 在从流服务获取的 Flux 对象的订阅函数中 我使用 ReactiveMongoRepository 接口中的 save 方法 当我尝试使用块函
  • 如何将句子分成单词和标点符号?

    例如 我想拆分这句话 I am a sentence 变成一个由 5 部分组成的数组 I am a sentence and 我目前正在使用preg split尝试后explode 但我似乎找不到合适的东西 这是我尝试过的 sentence
  • 函数模板:具有类型特征的不同专业化

    考虑到类模板 可以使用类型特征和虚拟启用模板参数为某些类型的组提供模板专业化 我已经早些时候问过 https stackoverflow com questions 12161033 partial template specializat
  • 为什么使用“sbt it:test”时未执行 Play/Scala 项目中的集成测试?

    我有一个游戏框架 https www playframework com 2 3 项目 我想将单元测试和功能测试分开 如下所示 running sbt test应该运行单元测试并排除集成测试 running sbt it test应该只运行
  • 使用 QML 调用加载器内的类

    实际上我有这个代码 import class1 import class2 Item id myItem property variant myVar 0 anchors fill parent Component id compClass
  • mongoDB重命名嵌入字段

    我们如何使用 C 和 mongoDB 重命名嵌入字段 文档示例Person将会 Id 1 LastName Smith FirstName John Orders Id 1 Name Trousers I want to rename Na
  • 在javascript中获取当前脚本执行文件名

    好吧 我已经搜索这个太久了 我试图找出如何从该 javascript 中返回运行包含的 javascript 的页面的文件名 我可以使用 PHP 轻松地做到这一点 SERVER SCRIPT FILENAME 但在 Javascript 中
  • 构建跨平台应用程序的最简单方法

    我读过几篇关于跨平台标签的文章 然而 当我开始一个新的应用程序 主要是终端 控制台应用程序 时 我想知道使其跨平台的最简单方法 即适用于 Linux Mac OS X 和 Windows 我思考过以下问题 在我的代码中添加各种宏 标签来为每
  • android Activity生命周期详解(onAttachedToWindow())

    我对 android 活动生命周期感兴趣 我想获得比广泛可用的基本 onCreate gt onStart gt onResume 更详细的描述 文档 参考 one http developer android com reference
  • 为什么 Android 项目的 build.gradle 中有一个自定义的“clean”任务?

    在 Android Studio 版本 2 1 中创建新项目时 根 build gradle 文件具有以下任务 task clean type Delete delete rootProject buildDir 我注意到一些 Androi
  • 填充的用户中没有访问令牌(Claimsprincipal)

    我们使用 IdentityServer4 作为 IdentityServer 使用 IdentityServer3 作为客户端 ASP NET MVC 5 一切正常 用户 声明原则通过 OWIN 正确设置 但我无法从用户那里获取访 问令牌