java adfs(oauth2)令牌验证如何进行?
我安装了ADFS3。0用于OAuth2,我终于在客户端应用程序上获得了“访问令牌”
像这样的事情:
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"access_token":"<access_token>",
"token_type":"bearer",
"expires_in":3600
}
令牌由头部分、有效载荷和签名组成
现在,我将带有令牌的请求发送到我的资源服务器。我想根据ADF(身份验证服务器和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
}
计划授权授予流程(短版本无授权授予代码详细信息):
我们有自己的客户端应用程序(issuer),它从ADF(auth+idp)请求令牌,然后将令牌+请求发送到资源服务器,然后资源服务器应根据ADF验证令牌。我缺少的是来自ADF的一些端点,如果签名/令牌有效。Thers在adfs服务器上有一个/adfs/oauth2端点(我也从那里获得了acces授权),但是微软的文档有点缺乏
# 1 楼答案
你想验证签名
如果是,请参阅OAuth2 : Verifying the Azure AD JWT signature
基本上使用“知名/openid配置”来获取“公共/discovery/keys”,然后从中构建证书