2017-10-16 36 views
0

我有一个由Azure B2C锁定的API。为我的客户端应用程序使用此API的所有内容都正确配置。我的问题涉及API附带的集成测试。虽然很明显,身份验证触发了用户界面登录,但如何才能请求用于需要身份验证的测试用例的标记,而不会弹出UI?如何在没有UI的情况下使用Microsoft.Identity.Client和集成测试获得访问令牌

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

+0

您是否将Web应用程序权限授予您的web Api? –

+0

对不起......我不太清楚你的意思。我已经实现了与文章中所述完全相同的解决方案:https://github.com/Azure-Samples/active-directory-b2c-dotnet-desktop(如果有帮助的话)。如果您有一个关于如何自动为XUnit集成测试获取访问令牌而无需任何用户交互的想法,我可以做任何需要的操作。 – Geekn

+0

对不起,我的评论不明。我认为你已经参考了这个文档:https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-access-tokens。 –

回答

0

它看起来像你想Resource Owner Password Grant Flow。 B2C不正式支持这一点,但Azure Active Directory的确如此。

阅读这些: Can I use "Resource Owner Password Grant" flow with Azure AD B2C

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

注意的是,在B2C简直像个AAD(本地帐户)的情况下,你可以使用这个流程。但对于Facebook和Google等其他社交标识提供商,您无法使用此流程。

我喜欢你的原始方法,它是在应用程序外部生成一个访问令牌并粘贴进来。我建议你添加Refresh Token,并使用现有的刷新令牌获取新的令牌。类似于this

让我知道这是否有帮助。

+0

啊......这是有道理的,我也明白,流量不适用于社交账户。在我们转换到B2C之前,我们使用了一个具有aspnet核心身份的普通本地帐户,并且基本上做了同样的事情来获得我们的json令牌。欣赏快速反馈。干杯! – Geekn

+0

我也投票支持这个功能; )看起来你们几个月前在作品中已经有了这些。 – Geekn

相关问题