adfs (oauth2) 令牌验证如何?

Gob*_*ins 5 java adfs oauth-2.0 jwt windows-server-2012-r2

我为 OAuth2 设置了 ADFS3.0,我终于在我的客户端应用程序上获得了“访问令牌”。

像这样的东西:

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

{ 
    "access_token":"<access_token>",
    "token_type":"bearer",
    "expires_in":3600
}
Run Code Online (Sandbox Code Playgroud)

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

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

这是我在 adfs 上的证书:

CertificateType : Token-Signing
IsPrimary       : True
StoreLocation   : CurrentUser
StoreName       : My
Thumbprint      : xyz
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?

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

标题:

{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "abc"
}
Run Code Online (Sandbox Code Playgroud)

有效负载:

{
  "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"
}
Run Code Online (Sandbox Code Playgroud)

签名:

{
  RSASHA256(
    base64UrlEncode(header) + "." +
    base64UrlEncode(payload),
    Ceritifate/secret
} 
Run Code Online (Sandbox Code Playgroud)

计划授权授予流程(简短版本,无授权代码详细信息):

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

nzp*_*mad 2

您想要验证签名。

如果是这样,请参阅OAuth2:验证 Azure AD JWT 签名

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