【问题标题】:How can I test the Microsoft Authentication process using automation?如何使用自动化测试 Microsoft 身份验证过程?
【发布时间】:2017-08-10 18:45:30
【问题描述】:

我是 Microsoft Graph Framework 的新手。我最近开发了一个集成了 Graph API 的 Web 应用程序。

第一次浏览到我的应用程序上的页面时,它会将用户重定向到 Microsoft 应用程序登录页面并提示输入凭据。身份验证成功后,我使用身份验证令牌获取用户的电子邮件并对这些电子邮件进行后期处理。

但是,我需要编写测试以查看令牌是否正确持久化以及用于电子邮件的后续处理。我所有的测试都是在 jenkins 上运行的自动化测试,没有设置为使用浏览器运行。如果没有身份验证令牌,我将无法测试下游流程。有没有一种无需浏览器/用户干预即可通过 API 获取令牌的方法?

【问题讨论】:

    标签: authentication jenkins automated-tests microsoft-graph-api


    【解决方案1】:

    对于在 Jenkins 中运行的自动化测试,您可能希望使用不需要用户登录的身份验证流程。有关详细信息,请参阅Getting auth tokens without a user 上的文档页面。

    总而言之,您可以在App Registration site 上注册应用并添加应用权限,例如User.Read.All。由于目标是获得无需用户登录即可工作的令牌,因此您需要通过获得管理员同意授予您的应用访问权限以作为服务运行。完成一次设置后,您可以通过POSTing to the token endpoint 使用您的应用信息和机密轻松请求令牌。

    【讨论】:

    • 这在我的情况下不起作用,因为我正在构建的应用程序应该只为组织中的某些用户同步电子邮件。 (这些是在 Web 应用程序上授权的用户)。管理员不会同意为我的应用提供 Email.Read.All 权限,因为这将允许我的应用从 CEO 的邮箱中读取收件箱
    【解决方案2】:

    也许您可以使用username/password authentication flow,您的测试不会通过正常的交互体验。

    您需要创建一个UserCredential 并使用它来获取令牌。

    UserCredential uc = new UserCredential(user, password);
    
    public Task<AuthenticationResult> AcquireTokenAsync(
           string resource, string clientId, UserCredential userCredential);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-26
      • 2018-10-11
      • 2020-04-06
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多