这是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签名。我想验证令牌,为此我需要签名证书的公钥。我在哪里可以获得证书?我甚至需要验证令牌吗?
答案 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