gpt4 book ai didi

c# - 如何从 cookie 中检索 OpenID Connect 身份 token

转载 作者:太空狗 更新时间:2023-10-29 22:30:38 26 4
gpt4 key购买 nike

如何从 Microsoft 基于 OWIN 的中间件生成的 cookie 中检索 OpenID 连接 token ?

我正在使用 Microsoft.Owin.Security.CookiesMicrosoft.Owin.Security.OpenIdConnect 使用“隐式流”保护网站。有时我认为我可能能够更好地理解事情或者能够解决问题我可以检查“原始” token 而不是从中生成的对象模型。

我知道信息是通过 Cookie 存储的,但还没有找到如何从 Cookie 中检索 token 的方法。这是一个开发环境,所以我应该可以访问所需的任何证书/ secret 。

我知道 token 应该有 3 个由句点分隔的段:{header}.{claims}.{signature}。如果我能找到 token ,我知道我可以使用 jwt.io查看内容。但是,我的所有 cookie 都没有符合该格式的内容。

这是我使用的中间件配置:

app.SetDefaultSignInAsAuthenticationType( CookieAuthenticationDefaults.AuthenticationType );
app.UseCookieAuthentication( new CookieAuthenticationOptions() );

app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = stsAuthority,
RedirectUri = baseHostingPath,
ResponseType = "id_token",
Scope = string.Join( " ", "openid", "profile", "email" )
} );

最佳答案

如果您只想在调试时执行此操作,我建议您尝试 https://github.com/vibronet/OInspector/tree/dev - 它可以帮助您在 Fiddler 中检查 token 。

如果您想在代码中执行此操作,您可以通过以下方式确保将原始 token 保存在 ClaimsPrincipal 中

  • 添加

    TokenValidationParameters = new TokenValidationParameters
    {
    SaveSigninToken = true
    }

    到选项初始化

  • 通过某种方式检索 token 以达到

    的效果
    var ci = (System.Security.Claims.ClaimsIdentity)
    ClaimsPrincipal.Current.Identity;
    string token = ((System.IdentityModel.Tokens.BootstrapContext)
    ci.BootstrapContext).Token;

关于c# - 如何从 cookie 中检索 OpenID Connect 身份 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30903131/

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