【问题标题】:adfs (oauth2) token validation howto?adfs (oauth2) 令牌验证如何?
【发布时间】:2017-01-12 23:07:18
【问题描述】:

我为 OAuth2 设置了 ADFS3.0,我终于在我的 Client-APP 上获得了“Access-Token”。

类似这样的:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

{ 
    "access_token":"<access_token>",
    "token_type":"bearer",
    "expires_in":3600
}

令牌由标头部分、有效负载和签名组成。

现在我将带有令牌的请求发送到我的资源服务器。我想针对 ADFS(身份验证服务器和 IDP)验证来自我的资源服务器的令牌。

这是我在 adfs 上的证书:

CertificateType : Token-Signing
IsPrimary       : True
StoreLocation   : CurrentUser
StoreName       : My
Thumbprint      : xyz

如何做到这一点?

更新: 关于令牌的一些信息:

标题:

{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "abc"
}

有效载荷:

{
  "aud": "https://serverurl",
  "iss": "http://.../adfs/services/trust",
  "iat": 1473063317,
  "exp": 1473066917,
  "auth_time": "2016-09-05T08:15:17.875Z",
  "authmethod":     "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport",
  "ver": "1.0",
  "appid": "some-uid"
}

签名:

{
  RSASHA256(
    base64UrlEncode(header) + "." +
    base64UrlEncode(payload),
    Ceritifate/secret
} 

计划的授权授权流程(短版没有授权授权代码详细信息):

我们有自己的客户端应用程序(颁发者),它从 ADFS(auth + idp)请求令牌,然后将令牌+请求发送到资源服务器,然后资源服务器应该针对 ADFS 验证令牌。如果签名/令牌有效,我缺少的是 ADFS 的某个端点。 Thers 是 ADFS 服务器上的 /adfs/oauth2 端点(我也从中获得了访问权限),但微软的文档有点缺乏......

【问题讨论】:

  • 不存在关于 ADFS 的 OAuth 2 实施的 Microsoft 文档。你是如何解决这个问题的?我有同样的问题。

标签: java oauth-2.0 jwt adfs windows-server-2012-r2


【解决方案1】:

您想要验证签名。

如果有,请参考OAuth2 : Verifying the Azure AD JWT signature

基本上使用“well-known/openid-configuration”来获取“common/discovery/keys”,然后从中构建证书。

【讨论】:

  • 如果验证签名足以证明我说是的。但我必须承认我根本不理解这个链接。是否需要连接到 Azure?为什么我不能使用自己的 ADFS 服务器进行验证?
  • 不 - 忘记 Azure 部分 - 这只是验证签名的方式。还要检查它是否是正确的受众、是否是预期的发行者、令牌是否已过期等。请参阅 RFC 7662。
  • 您可以使用自己组织的 ADFS。唯一的部分是当您在您的应用程序中使用第三方身份验证时,您必须信任您组织的身份服务器,以便您的应用程序可以验证属于您组织的身份服务器提供的令牌。主要是您必须信任的发行人。
  • 是的,我想这样做,但我不知道如何...我已经在问题中添加了一些更新
猜你喜欢
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 2017-08-25
  • 2021-02-10
  • 2015-11-11
  • 1970-01-01
  • 2012-04-11
  • 2013-04-11
相关资源
最近更新 更多