当前位置: 首页 > 知识库问答 >
问题:

adfs(oauth2)令牌验证如何进行?

慕震博
2023-03-14

我为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
}

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

现在,我将请求与令牌一起发送到我的资源服务器。我想从我的资源服务器对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
} 

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

我们有自己的客户端应用程序(issuer),它从ADFS(auth idp)请求令牌,然后将令牌请求发送到资源服务器,然后资源服务器应根据ADFS验证令牌。我缺少的是来自ADF的一些endpoint,如果签名/令牌有效。Thers在adfs服务器上有一个/adfs/oauth2endpoint(我也从那里获得了acces授权),但是有些缺少来自microsoft的文档。。。

共有1个答案

史昱
2023-03-14

您想验证签名。

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

基本上使用“已知的/openid配置”来获取“公共/discovery/keys”,然后从中构建证书。

 类似资料:
  • 在我的MVC网站上,如果我检测到一个ADFS账户被使用,我会重定向到一个ADFS登录页面。在用户输入他们的ADFS凭据后,ADFS站点将< code>WsFederationMessage回发到我的站点。如何验证作为此< code>WsFederationMessage的一部分呈现给我的站点的ADFS令牌? 在 中间件类中,我有以下调用 方法的相关代码: 当我尝试调用时,我遇到了这个错误: 描述:

  • SignatureException:签名长度不正确:得到256,但预期为128。我使用的是和。到目前为止,同样的配置有效--有什么想法吗?

  • 当且仅当用户在发出OAuth2请求时登录到LinkedIn时,它才起作用。 如果用户未登录,则会遇到错误。 我们的行动顺序: 成功获取新的访问令牌 使用访问令牌,发布到apiendpoint 之后,我们将收到一份401,内容如下: 有时,经过一段时间后,使用相同的访问令牌重试会得到200。有时不会。 如果用户在“401期间”登录LinkedIn,那么之前获取的访问令牌就会神奇地开始工作。 我不知道

  • 我有一个SPA,用户在ADFS中进行身份验证,应用程序获得访问令牌。我正在尝试使用JS代码来模拟ADAL JS的功能,其中使用一个隐藏的iframe向ADFS请求获取新令牌。 这是 iframe 的 'src' 值: https://../adfs/oauth2/authorize?客户端id=... ADFS配置有两个域:AD和ADLDS(LDAP)。因此,我不确定需要传递哪些值domain_h

  • 我从spring boot oauth2服务器生成JWT令牌,但当我想使用endpoint验证此JWT令牌时,我将post请求发送到此endpoint,并将JWT包含在授权头中,得到401-未经授权的http错误代码。 我从服务器得到的结果是: 为什么oauth服务器返回401? 下面是我对oauth服务器的实现:

  • 通过令牌验证在注册中心控制权限,以决定要不要下发令牌给消费者,可以防止消费者绕过注册中心访问提供者,另外通过注册中心可灵活改变授权方式,而不需修改或升级提供者 可以全局设置开启令牌验证: <!--随机token令牌,使用UUID生成--> <dubbo:provider interface="com.foo.BarService" token="true" /> 或 <!--固定token令牌,