首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AADSTS50013:断言签名验证失败。[原因-找不到密钥。,客户端使用的密钥的指纹:'xxxx‘。

AADSTS50013:断言签名验证失败。[原因-找不到密钥。,客户端使用的密钥的指纹:'xxxx‘。
EN

Stack Overflow用户
提问于 2021-05-05 11:25:37
回答 1查看 3.1K关注 0票数 0

我有三个应用程序参与了AzureAD OBO流:

  1. 角FrontEnd ->注册AzureAD为OIDC应用程序
  2. ASP.NET Core
  3. NAV OData服务-->向AzureAD注册为SAML应用程序

下面是完整的流程:

  1. 角前端应用程序将用户签名到Azure AD中,并请求Web 1的委托访问令牌(ASP.NET Core )
  2. 然后,客户端应用程序使用发出的访问令牌调用Web 1
  3. Web 1反过来需要调用下游的Web 2 (NAV服务),因此它使用其访问令牌(在上面的步骤2)为Web 2请求访问令牌。交换的令牌仍然是代表用户中的原始签名发出的,并且它具有委托权限。
  4. Web 1使用新的访问令牌调用Web 2

在上面的步骤3中,我得到了错误。

错误详细信息:

代码语言:javascript
运行
复制
 One or more errors occurred. (AADSTS50013: Assertion failed signature validation. [Reason - The key was not found., Thumbprint of key used by client: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx']
    Trace ID: afc20e5e-ebea-4546-af4b-820f48083e01
    Correlation ID: b5d8d7b5-52d1-430d-af81-d34918970831
    Timestamp: 2021-05-03 11:35:25Z)

有人能在这里帮助我解决这个问题吗?

在这种情况下,角锋是使用隐式流动。

代码语言:javascript
运行
复制
https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/authorize?response_type=token&scope=api://xxxx--<WEB API 1>.default%20openid%20profile&client_id=<Application (client) ID>&redirect_uri=<ApplicationURL>&state=xxxx&nonce=yyyy&client_info=1&x-client-SKU=MSAL.JS&x-client-Ver=msal&login_hint=mytestaccount@mydomain.com&client-request-id=yyyyyy&prompt=none&response_mode=fragment

下面是收到的id_token:

代码语言:javascript
运行
复制
{
  "aud": "<Application (client) ID>",
  "iss": "https://login.microsoftonline.com/<tenantid>/v2.0",
  "iat": 1620380572,
  "nbf": 1620380572,
  "exp": 1620384472,
  "aio": "AWQAm/8TAAAAIVowa1CNNUEB/tB/OcgatUBo9SzDJch09USynyiE+S+be6xkV9TczjRol4Td0czWrdsrzoqDBHUQxbAcnPT90InTNwLfYeHon5Vvk6eFsn2omrgpYlCj90QIXtIoduhd",
  "email": "mytestaccount@mydomain.com",
  "name": "mytestaccount, mytestaccount",
  "nonce": "078bca2a-35ef-457d-96d8-92db7ac3d106",
  "oid": "96035811-49f6-4246-923f-4edba4555e14",
  "preferred_username": "mytestaccount@mydomain.com",
  "rh": "0.ASYA8UXaNizdH02vE1q-RrmZIYsBYTzBse5Co7kY9CZdWDcmALA.",
  "sub": "BAc2RwnOjKjv8vxtS0zOSQ0kgQ74zEvWJDmWnMoWdyM",
  "tid": "36da45f1-dd2c-4d1f-af13-5abe46b99921",
  "uti": "8r7u-zYcr0GSNUdl4STUAQ",
  "ver": "2.0"
}

访问WEB API 1的访问令牌:

代码语言:javascript
运行
复制
{
  "aud": "api://xxxx--<WEB API 1>",
  "iss": "https://sts.windows.net/36da45f1-dd2c-4d1f-af13-5abe46b99921/",
  "iat": 1620380574,
  "nbf": 1620380574,
  "exp": 1620384474,
  "acr": "1",
  "aio": "AVQAq/8TAAAAoi/awR8N8P1eapXNZfcGKhsy9uKyL6qv77raeIKYLOyZjXtsVKXMELCu+qZvKJtSaYm/nemvyUPc2OvJiPrvwpwrteqSU1iYM5C4xfPTxHo=",
  "amr": [
    "pwd",
    "rsa",
    "mfa"
  ],
  "appid": "<Application (client) ID>",
  "appidacr": "0",
  "deviceid": "b55e39a3-f492-4679-83e2-53fcd024beba",
  "email": "mytestaccount@mydomain.com",
  "family_name": "mytestaccount",
  "given_name": "mytestaccount",
  "ipaddr": "xx.xx.xx.xx",
  "name": "mytestaccount, mytestaccount",
  "oid": "96035811-49f6-4246-923f-4edba4555e14",
  "onprem_sid": "S-1-5-21-238447276-1040861923-1850952788-976396",
  "rh": "0.ASYA8UXaNizdH02vE1q-RrmZIYsBYTzBse5Co7kY9CZdWDcmALA.",
  "scp": "user_impersonation",
  "sub": "F5atxEe7z2ooojdNoFhaAG_Xs2SBnnkYKJ4yCCWT1HA",
  "tid": "36da45f1-dd2c-4d1f-af13-5abe46b99921",
  "unique_name": "mytestaccount@mydomain.com",
  "upn": "mytestaccount@mydomain.com",
  "uti": "ll2WpznLGEq23DrUk4eoAQ",
  "ver": "1.0"
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-10 10:37:52

我可以获得api 1和api 2的访问令牌。

首先,我对api 1公开了api,并添加了客户端应用程序

接下来,使用隐式流获取中间层api 1的访问令牌。在浏览器中请求id令牌访问令牌

代码语言:javascript
运行
复制
https://login.microsoftonline.com/{tenant id}/oauth2/v2.0/authorize?
client_id={client_id}
&response_type=id_token token
&redirect_uri={redirect_uri}
&scope=openid api://{api 1 client id}/user_impersonation
&response_mode=fragment
&state=12345
&nonce=678910

解析api 1的访问令牌。

接下来,公开api 2的api,并将api 1作为客户端应用程序添加。

最后,使用OBO流获取api 2的访问令牌(注意:assertion参数是api 1的访问令牌)。

解析api 2的访问令牌。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67400354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档