如何在没有 UI 的情况下使用 Microsoft.Identity.Client 和集成测试获取访问令牌

How to aquire access token without UI with Microsoft.Identity.Client and Integration Testing

我有一个 API 被 Azure B2C 锁定了。使用此 API 的客户端应用程序的所有内容均已正确配置。我的问题与 API 附带的集成测试有关。虽然很明显身份验证会触发 UI 登录,但如何在不弹出 UI 的情况下为需要身份验证的测试用例请求令牌?

现在我必须有一个实用程序允许我获取访问令牌(通过弹出 UI)然后在我的测试项目中使用它。最终它会过期,因此所有测试都会失败。这是有道理的,但我想知道是否有人想出一种方法来使用此库自动执行获取令牌的过程,以便测试用例可以在不弹出 UI 的情况下获取它们。屏幕抓取工具?

您似乎想要 Resource Owner Password Grant Flow。 B2C 不正式支持此功能,但 Azure Active Directory 支持。

阅读这些:

https://blogs.msdn.microsoft.com/wushuai/2016/09/25/resource-owner-password-credentials-grant-in-azure-ad-oauth/

请注意,在 B2C 仅充当 AAD(本地帐户)的场景中,您可以使用此流程。但对于 Facebook 和 Google 等其他社交身份提供商,您不能使用此流程。

我喜欢您原来的方法,即在应用程序外部生成访问令牌并将其粘贴进去。我建议添加您获得的刷新令牌,以及使用现有刷新令牌获取新令牌的代码。类似于 this.

如果有帮助请告诉我。