【问题标题】:Persisting the OAuth2 bearer token when using Thinktecture Identity Server使用 Thinktecture Identity Server 时保留 OAuth2 不记名令牌
【发布时间】:2014-04-19 21:44:57
【问题描述】:

我一直在关注 http://leastprivilege.com/2012/11/01/oauth2-in-thinktecture-identityserver-v2-resource-owner-password-flow/ 上的 OAuth2 资源所有者密码流的 Thinktecture Identity Server 示例

我的示例工作并通过以下过程成功返回 JWT 令牌

  1. 使用 Thinktecture OAuth2Client 检索访问令牌
  2. 从客户端计算机上的“受信任的人”存储中检索签名证书
  3. 使用证书并创建新的 JwtSecurityTokenHandlerTokenValidationParameters 并调用 tokenHandler.ValidateToken 以获取 ClaimsPrincipal

从这里我获得了授权,但我不确定为进一步请求保留令牌的最佳方式。我尝试使用

var sessionToken = new SessionSecurityToken(principal, TimeSpan.FromHour(8));
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionToken);

但我没有注册SessionAuthenticationModule。我尝试使用身份和访问向导来完成此操作,但它对配置进行了许多更改并尝试为被动身份验证进行设置。

我可以使用传统的 FormsAuthentication cookie (.aspnetAuth),但我记得讨论过 .FedAuth cookie 的一个优点是,如果大小变得太大,它会自然地分成几个 cookie。

我正在努力寻找能够为我完成图片的文章。我需要不记名令牌来访问堆栈中的各种 API。我有用于 SSO/被动身份验证的工作示例,因为大部分工作都是为您完成的。我只是不确定在使用资源所有者密码流程时使用的最佳模式。

所以

  1. 我是否错过了使用 Thinktecture 身份模型和服务器实现这一目标的更直接的方法?
  2. 我是否应该尝试创建一个 FedAuth cookie,以便我可以重用已经为 WIF 设置的各种 Messagehandler/filter 组件?
  3. 否则 - 将访问令牌简单地放在 FormsAuthentication cookie 的 UserData 部分有什么特别的错误吗?

【问题讨论】:

    标签: c# oauth-2.0 thinktecture-ident-server thinktecture-ident-model bearer-token


    【解决方案1】:

    试试看这个问题:WIF Security Token Caching

    我相信这段代码可能会做

    var sessionSecurityToken = new SessionSecurityToken(principal, TimeSpan.FromHours(Convert.ToInt32(System.Web.Configuration.WebConfigurationManager.AppSettings["SessionSecurityTokenLifeTime"])))
    {
        IsPersistent = true, // Make persistent
        IsReferenceMode = true // Cache on server
    };
    FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionSecurityToken);
    

    【讨论】:

    • 遗憾的是,这是我目前已注释掉的代码。正如我所提到的 - 我目前没有注册会话身份验证模块,此代码取决于 WIF 的设置。我不是在询问缓存令牌并用标识符替换它。理想情况下,我确实想使用上面的这段代码 - 它是有道理的,但我不确定要采取什么步骤让我在不实际打开被动身份验证的情况下做到这一点
    猜你喜欢
    • 2014-06-16
    • 2020-10-19
    • 2016-11-20
    • 2015-05-29
    • 2015-02-22
    • 1970-01-01
    • 2013-04-10
    • 2013-12-13
    • 2018-06-01
    相关资源
    最近更新 更多