Osa*_*han 5 .net api automation automated-tests identityserver3
我们正在使用身份服务器为我们的 Web 服务生成访问令牌。我们还添加了招摇。但是我们面临的问题是,通过使用 API 自动化的代码片段来生成访问令牌。是否有使用用户名和密码自动获取访问令牌的方法?
谢谢你。
我解决这个问题的方法是,如果配置了测试客户端密钥,则添加客户端凭据客户端,我仅在测试环境中配置此密钥,但显然不在更高的环境中,这意味着客户端永远不会添加到那里。
因此,无论是在您的 appsettings.{property_environment}.settings 中还是通过环境变量设置客户端密钥,然后在您的 IdentityServer 配置中您可以添加:
//attempt to get the test client secret
var testClientSecret = configuration["TestClientSecret"];
if (!String.IsNullOrWhiteSpace(testClientSecret))
{
    clients.Add(new Client
    {
        ClientId = "MyTestClient",
        AllowedGrantTypes = GrantTypes.ClientCredentials,
        ClientSecrets =
        {
            new Secret(testClientSecret.Sha256())
        },
        AllowedScopes = { "MyApiScope", "MyOtherApiScope", "etc." }
    });
};
Run Code Online (Sandbox Code Playgroud)
然后我有一个 Postman 测试集合,首先发布到:
https://{{idp_base_url}}/connect/token
Run Code Online (Sandbox Code Playgroud)
使用基本身份验证,将测试客户端名称的用户名和密码作为客户端密钥(其中 {{idp_base_url}} 是包含适合环境的 IdentityServer 主机的 postman 环境变量)。
然后我运行一些测试,同时还将访问令牌存储到 API:
//tests...
var tokenData = JSON.parse(responseBody);
//more tests...
postman.setEnvironmentVariable("cc_token", tokenData.access_token);
Run Code Online (Sandbox Code Playgroud)
然后,集合中的后续测试可以使用此令牌以及使用上面的 Postman 环境变量的不记名令牌身份验证标头来运行 API 测试:
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           9454 次  |  
        
|   最近记录:  |