如何验证Outlook REST API令牌?

时间:2016-03-25 15:25:23

标签: azure oauth outlook rsa outlook-restapi

这是how to validate token using outlook rest api的副本,但没有得到答案,所以我再次提问。

我设法授权用户并接收访问令牌。我将以沙盒为例。

我已解码访问令牌并获得以下内容:

标题

{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "MnC_VZcATfM5pOYiJHMba9goEKY",
  "kid": "MnC_VZcATfM5pOYiJHMba9goEKY"
}

有效载荷

{
  "aud": "https://outlook.office.com",
  "iss": "https://sts.windows.net/c512ffd1-581d-4dc0-a672-faee32f6387c/",
  "iat": 1458918504,
  "nbf": 1458918504,
  "exp": 1458922404,
  "acr": "1",
  "amr": [
    "pwd"
  ],
  "appid": "32613fc5-e7ac-4894-ac94-fbc39c9f3e4a",
  "appidacr": "1",
  "family_name": "Dehenne",
  "given_name": "Denis",
  "ipaddr": "137.117.9.62",
  "name": "Denis Dehenne",
  "oid": "28328486-e820-4c98-a1cf-e8b35456313a",
  "puid": "10033FFF89319A48",
  "scp": "Calendars.Read Contacts.Read Mail.Read",
  "sub": "XfYUvqiIreYX9wF-909Yf7Hodiwg6ClTwWOc75WmX7o",
  "tid": "c512ffd1-581d-4dc0-a672-faee32f6387c",
  "unique_name": "DenisD@oauthplay.onmicrosoft.com",
  "upn": "DenisD@oauthplay.onmicrosoft.com",
  "ver": "1.0"
}

特征

gtpjf40FxEN8cTX22Mk-Da1n_sKtIUGAmzyYkuhkCskR5y1j4uuenf4ejJxeRwtqIIRWN5w1zOfvFZ2XqXreeSpSCZU-CJCoHIicchChUbyq4iIEcWZr29LbnpDkCyqB8LzoA3rEHUxhZYwHnWIHmkrD4XbMN4CW31bdNQwP0YgXvIucLe_tv80Eu4jDiZsqfCh91DFIb7bv6mbPXiTYMtV6OEdXeHLh--vFvZRRm--atSkKrZHFPT1no2B0YAC8w0kEYWPHyM-TbGni6WjIc7ZGSuDNmkHJfIKndcoFzlVJubV2ntKJhWrXfee490oj3GJi-lkNkFLfa9_VDIYu0w

Inside the Exchange identity token提到了有关元数据和自签名X509证书的内容,但这些令牌包含的内容并不存在于我所获得的内容中。

标头声明令牌已使用RSA签名。我想验证令牌,为此我需要签名证书的公钥。我在哪里可以获得证书?我甚至需要验证令牌吗?

1 个答案:

答案 0 :(得分:0)

令牌由Microsoft Azure颁发,而不是由Outlook或Outlook REST API颁发。我为您添加了azure标记。根据子主题Validating Tokens

  

此时,您的应用需要执行的唯一令牌验证是验证id_tokens。为了验证id_token,您的应用应该验证id_token的签名和id_token中的声明。

     

我们提供图书馆和显示如何轻松处理令牌验证的代码示例 - 以下信息仅供希望了解基础过程的人员使用。还有几个第三方开源库可供JWT验证 - 几乎每个平台都有至少一个选项。语言。

它继续提供更具体的内容。喜欢获取签名密钥数据:

  

您可以使用位于以下位置的OpenID Connect元数据文档获取验证签名所需的签名密钥数据:

     

https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration