当我试图使用Cortana用户令牌(这是一个图形令牌)生成一个“代理”令牌到另一个使用ClientAssertionCertificate
/ ClientCredential
的消费Web应用程序时,我会收到一个错误(在下面提到),方法是将它的AppId
作为ResourceId
传递给通过使用Cortana用户令牌生成的userAssertion
。
当检查我们的Bot设置时,它与其他消费Web API (API B)一起配置为有效的应用程序以及。我们是否需要在AAD中做任何额外的设置来获得这个代币?
AADSTS50013: Assertion contains an invalid signature.
[Reason - The provided signature value did not match the expected signature value.,
Thumbprint of key used by client: '9DB0B05B5D70DD7901FB151A5F029148B8CC1C64',
Found key 'Start=11/11/2018 00:00:00,
End=11/11/2020 00:00:00'
]
Trace ID: a440869f-b8f5-4d87-ba1a-6bd8dd7ba200
Correlation ID: 651e1fa8-2069-4489-a687-e68e5206e193
Timestamp: 2019-01-02 07:14:45Z
下面是我们试图为其他消费的Web (API B)获取代理令牌的流程和示例代码。
流动步骤:
发布于 2019-01-17 14:12:46
我们可以通过将依赖的自定义API (API B) "user_impersonation“范围配置到Bot的Cortana通道配置来解决这个问题。随着配置的改变,我们不需要代表我们的Microsoft应用程序为API B生成令牌。
感谢所有支持为这个线程提供解决方案的人。
发布于 2019-01-11 10:29:07
我的理解是:首先从Cortana访问ms图形API获得用户令牌;然后使用用户令牌在Microsoft Bot Framework API中生成OBO令牌;最后,您希望使用OBO令牌从Microsoft Bot Framework API访问API B。
您希望在中获得OBO令牌,您应该使用API id和秘密,为此,我从未尝试过这样做。
在我这边,我使用v1端点,我创建了两个API (API和B),我的流程是:首先,我的应用程序请求API A的token1;
接下来,使用token1从API A为API B请求token2;
最后,使用OBO token2从API B为aad图形API请求OBO token3。
有关v1端点中的OBO,请阅读link1。
有关v2端点中的OBO,请阅读link2。
https://stackoverflow.com/questions/54008866
复制相似问题