【问题标题】:dotnetopenauth - How to add extra data in the refresh token?dotnetopenauth - 如何在刷新令牌中添加额外数据?
【发布时间】:2012-10-08 02:08:56
【问题描述】:

我目前正在处理一个 iPad 应用程序需要访问现有 Web 应用程序的项目。 iPad 应用程序是内部开发的,因此是值得信赖的应用程序。然而,Web 应用程序提供的数据是敏感的,因此我们不想将客户端凭据存储在 iPad 上。我们还希望能够在不影响常规用户访问权限的情况下撤销 iPad 访问权限。

鉴于上述情况,OAuth2 资源所有者密码凭据授权/流程非常适合我们的要求,自从 DotNetOpenAuth 已建立库以来,我们就已经使用它实现了这一要求。

但是,我们现在需要将一些元数据添加到资源服务器的访问和刷新令牌中。授权服务器在我们的 IAuthorizationServerHost.CreateAccessToken 方法的实现中通过 AuthorizationServerAccessToken.ExtraData 属性添加元数据:

public AccessTokenResult CreateAccessToken(IAccessTokenRequest accessTokenRequestMessage)
{
    var accessToken = new AuthorizationServerAccessToken();

    // Add some extra data to access token
    accessToken.ExtraData.Add("server_parameter1", this.ServerValue1);
    accessToken.ExtraData.Add("server_parameter2", this.ServerValue2);

    // Set ResourceServerEncryptionKey properties etc

    return new AccessTokenResult(accessToken);
}

这正是我们想要的访问令牌,但是刷新令牌中不包含相同的“ExtraData”,这会在访问令牌过期并需要刷新时导致问题,因为我们实际上丢失了额外的数据(因为旧的访问令牌被丢弃)。

谁能建议是否可以在当前版本的 DotNetOpenAuth 中以类似于访问令牌的方式填充刷新令牌“ExtraData”?

【问题讨论】:

    标签: oauth-2.0 dotnetopenauth


    【解决方案1】:

    不,我认为目前没有办法将额外数据嵌入到刷新令牌中。让我们谈谈这是为什么。

    首先,无论您是否开发,都不存在可信赖的 iPad 应用。问题是您分发的应用程序(甚至在内部)无法保密。任何client_secret、证书等都可以破解。因此,您分发的应用程序无法对服务器进行身份验证。如果服务器无法验证客户端,则服务器无法信任客户端。

    现在让我们再看看您的场景(如果您有更多反馈,最好继续在 dotnetopenid@googlegroups.com 上进行讨论)。客户端拥有希望最终到达资源服务器的数据。您目前正在尝试首先通过授权服务器将该数据传递,然后通过访问令牌传递给资源服务器。这是为什么?为什么不让客户端直接将数据连同访问令牌一起发送到资源服务器?如果答案是资源服务器不应该信任客户端,那么由于上一段中给出的原因,通过访问令牌发送它是一种错误的安全感。如果客户端可以向资源服务器提供虚假信息,它也可以向授权服务器提供虚假数据。

    访问令牌中额外数据的一种有效用途是授权服务器自己知道的数据,而不是来自客户端的数据。在这种情况下,它可以在每次生成访问令牌时查找该数据,因此不必将其存储在刷新令牌中。

    【讨论】:

    • 对不起,我的问题具有误导性——额外的数据实际上来自授权服务器,并且在客户端发出请求时是资源服务器所需要的。客户端不知道额外的数据。我已经编辑了问题以澄清。但是,从您的第一条评论来看,这似乎是不可能的。如果是这种情况,请告诉我,我会将其标记为例外答案
    • 是否可以在 CreateAccessToken 方法中确定用户名?我已经查看了我们的代码,如果我们可以在创建访问令牌时确定用户,我们可以避免刷新令牌中的额外数据。
    • 对。这是不可能的。很高兴听到您所需要的只是访问授权用户。这只是CreateAccessToken 忽略该参数的疏忽。它将be fixed soon.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 2013-09-13
    • 2012-06-26
    • 2017-10-12
    • 2011-05-18
    • 1970-01-01
    • 2020-11-11
    相关资源
    最近更新 更多