gpt4 book ai didi

c# - 集成测试 ASP.NET WebAPI Controller ,使用 identityserver3 进行持有者身份验证

转载 作者:行者123 更新时间:2023-11-30 21:47:51 31 4
gpt4 key购买 nike

我正在尝试集成测试我的网络 API Controller 。该应用程序使用 JWT 针对资源服务器对用户进行身份验证。

为了加速应用程序,我使用了 Microsoft.OWIN.Testing 中的 TestServer。

我可以通过像浏览器那样执行登录来获得有效的 JWT。然后我继续将 JWT 添加到请求中,如下所示:

request.AddHeader("Authorization", "Bearer " + accessToken.RawData);

该 header 也到达 OWIN 管道。但是,所有受 [Authorize] 属性保护的 Controller 在调用时都会返回 401 Unauthorized

该 API 由 Thinktecture 使用 IdentityServer3 进行保护,相关部分如下所示:

var authority = "http://localhost:8080/idsrv/";
var parameters = new TokenValidationParameters() { ValidAudiences = new[] { "implicitclient" } };

var options = new IdentityServerBearerTokenAuthenticationOptions
{
Authority = authority,
TokenValidationParameters = parameters
};

app.UseIdentityServerBearerTokenAuthentication(options);

var configuration = new WebApiConfiguration(this.container);
configuration.Configuration(app);

我真的不知道去哪里寻找任何指向问题的指针,所以非常感谢您的帮助。

最佳答案

你真的想用 token 中间件进行测试吗?我的意思是 - 您不是在测试 token 中间件本身 - 而是基于某些身份验证结果的 Controller 逻辑。

只需编写一个小型内联中间件,将 Context.Authentication.User 设置为您要测试的某些 ClaimsPrincipal。

app.Use(async (ctx, next) => { ctx.Authentication.User = somePrincipal; await next() };

关于c# - 集成测试 ASP.NET WebAPI Controller ,使用 identityserver3 进行持有者身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38095255/

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