首页 文章

是否可以在OWIN中更新访问令牌

提问于
浏览
0

我正在寻找一种方法来使用 OWIN.NET API 应用程序中新建访问令牌声明 . 我正在阅读这篇文章,我读到可以使用刷新令牌 .

这个问题的背景如下 . 我想在access_token的声明中存储一些信息,这些声明可以通过用户的操作进行更新 . 例如:用户名存储在声明中 . 用户决定更新他/她的用户名 . 是否可以更新索赔?

但我无法在任何地方找到一个好的例子 . 这是否可以在不违反应用程序安全性的情况下实现?

1 回答

  • 0

    我不相信这是可能的 . 一旦创建了Oauth令牌,就无法对其进行修改,因为修改会导致签名变为无效(这是一件好事) .

    如果消费应用程序和API在您的控制之下,则需要使用消费应用程序来更新令牌(重新认证,使用刷新令牌等),否则这可能不是实际限制 . API消费者 .

    另一种方法是避免在访问令牌中存储可变权利要求,而是在收到请求时填充从访问令牌中获得水合的ClaimsIdentity对象(在IPrincipal中) . 这将允许您更新API中的值,但也不要求您的消费者每次声明需要更改时都获取新的访问令牌 . 缺点是你需要在每个请求上加载声明 . 您还需要在访问令牌中具有一个值,该值可以保证识别无法更改的用户 .

    你可以使用OwinMiddleware类来做到这一点:

    public override async Task Invoke(IOwinContext context)
    {
        ClaimsIdentity identity = context.Authentication.User?.Identity as ClaimsIdentity;
        identity.AddClaims(new Claim("Name", "Value));
    }
    

相关问题