我正在使用身份服务器4的web api.我不知道从哪里开始编写集成测试.我有一个登录控制器接收用户名和密码,用于ResourceOwnerPassword授权类型.以下是我的代码.
控制器.
[Route("Authentication/Login")] public async TaskWebApiLogin(string username, string password) { var accessToken = await UserAccessToken.GenerateToken(username, password); return new JsonResult(accessToken); }
用于生成令牌的类
public async TaskGenerateToken(string username, string password) { //discover endpoint for metadata var disco = await DiscoveryClient.GetAsync("http://localhost:5000"); //request token var clientToken = new TokenClient(disco.TokenEndpoint, "client", "secret"); //var tokenResponse = await clientToken.RequestClientCredentialsAsync("Payment"); var tokenResponse = await clientToken.RequestResourceOwnerPasswordAsync(username, password, "IntegrapayAPI"); if (tokenResponse.IsError) { //Error tokenResponse.Error return tokenResponse.Error; } return tokenResponse.Json.ToString(); }
IdentityServer Project启动类.
public void ConfigureServices(IServiceCollection services) { services.AddIdentityServer() .AddTemporarySigningCredential() .AddInMemoryApiResources(Config.GetApiResources()) .AddInMemoryClients(Config.GetClients()); //.AddTestUsers(Config.GetUsers()); services.AddTransient(); // Add framework services. //services.AddMvc(); }
Espen Medbø.. 5
你可以看看这个答案:https://stackoverflow.com/a/39409789/147041 免责声明:我自己的问题,我的答案.它包含一个指向GitHub仓库的链接,其中集成测试是针对API设置的,但它当然也适用于MVC.本质上是使用内存中的IdentityServer充当您的令牌生成器和验证器.
除此之外,您不应将API与IdentityServer混合使用.使用IdentityServer生成令牌,然后您的API将再次验证身份服务器的令牌.
有很多好的样品可以帮助您入门.
你可以看看这个答案:https://stackoverflow.com/a/39409789/147041 免责声明:我自己的问题,我的答案.它包含一个指向GitHub仓库的链接,其中集成测试是针对API设置的,但它当然也适用于MVC.本质上是使用内存中的IdentityServer充当您的令牌生成器和验证器.
除此之外,您不应将API与IdentityServer混合使用.使用IdentityServer生成令牌,然后您的API将再次验证身份服务器的令牌.
有很多好的样品可以帮助您入门.