gpt4 book ai didi

c# - 如何在 asp.net mvc core 中为 Identity Server 4 编写集成测试

转载 作者:太空狗 更新时间:2023-10-30 01:01:05 25 4
gpt4 key购买 nike

我有一个使用 Identity Server 4 的 Web API。我不知道从哪里开始编写集成测试。我有一个登录 Controller ,它接收用于 ResourceOwnerPassword 授权类型的用户名和密码。下面是我的代码。

Controller 。

[Route("Authentication/Login")]
public async Task<IActionResult> WebApiLogin(string username, string password)
{
var accessToken = await UserAccessToken.GenerateToken(username, password);
return new JsonResult(accessToken);
}

生成 token 的类

public async Task<string> GenerateToken(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 项目启动类。

public void ConfigureServices(IServiceCollection services)
{
services.AddIdentityServer()
.AddTemporarySigningCredential()
.AddInMemoryApiResources(Config.GetApiResources())
.AddInMemoryClients(Config.GetClients());
//.AddTestUsers(Config.GetUsers());

services.AddTransient<IResourceOwnerPasswordValidator, ResourceOwnerPasswordValidator>();

// Add framework services.
//services.AddMvc();
}

最佳答案

你可以看看这个答案:https://stackoverflow.com/a/39409789/147041免责声明:我自己的问题,我的答案。它包含指向 GitHub 的链接repo 在其中针对 API 设置集成测试,但它当然也适用于 MVC。本质是使用内存中的 IdentityServer 作为您的 token 生成器和验证器。

除此之外,您不应该将您的 API 与 IdentityServer 混合使用。使用 IdentityServer 生成您的 token ,然后您的 API 将再次向身份服务器验证这些 token 。

有很多不错的samples在那里让你开始。

关于c# - 如何在 asp.net mvc core 中为 Identity Server 4 编写集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41842430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com