gpt4 book ai didi

c# - 填充的用户中没有访问 token (Claimsprincipal)

转载 作者:太空宇宙 更新时间:2023-11-03 12:13:24 26 4
gpt4 key购买 nike

我们将 IdentityServer4 用于 IdentityServer,将 IdentityServer3 用于客户端 (ASP.NET MVC 5)。

一切正常(用户/Claimsprincipal 通过 OWIN 正确设置)除了我无法从用户那里获取访​​问 token 。

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

Startup.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",
});

检索访问 token 的代码(在其中一个 Controller 内):

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

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

最佳答案

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

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

然后根据用户原则,访问 token 可用作声明(名为“ token ”)。

关于c# - 填充的用户中没有访问 token (Claimsprincipal),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50962892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com