gpt4 book ai didi

asp.net-core - 使用 TestServer 托管 ASOS

转载 作者:行者123 更新时间:2023-12-02 14:04:22 27 4
gpt4 key购买 nike

我有一个OpenIdDict基于AspNet.Security.OpenIdConnect.Server的认证服务器。设置按预期工作。

现在要做一些流程集成;跨越整个后端架构的系统测试,我使用 TestServer类(class)。

Why I test like this is another question

  • 以最少的工作量实现最多的测试代码覆盖
  • 已决定不进行单元测试...(他们说工作量太大)
  • 真正的集成测试所涉及的代码要少得多,当我想要实现良好的覆盖率时,也需要做很多工作
  • 该测试基于使用域语言方法构建的框架,这意味着我可以为我们当前的 Web api 测试、selenium Web ui 测试、selenium 负载测试和 wpf ui 测试描述相同的功能。

当我调用资源服务器的 Web API 端点时,授权想要加载 http://localhost/.well-known/openid-configuration但失败了。

{"IDX10803: Unable to obtain configuration from: 'http://localhost/.well-known/openid-configuration'."})

这是我用于测试环境的 OpenIdConnectSettings:

  • AllowInsecureHttp = true,
  • RequireHttpsMetadata = false

我可以让服务器发出配置还是可以通过其他方式提供配置?

最佳答案

对于 TestServer 需要注意的是,一切都发生在内存中:没有打开的套接字来处理您的应用程序可能发送的 HTTP 请求。

不幸的是,OpenID Connect 客户端中间件(内部使用 HttpClient)无法知道这一点,并尝试向 OpenIddict 发送“真实”HTTP 请求以检索发现文档。

要解决此问题,建议的方法是将 OIDC 中间件使用的默认反向 channel 处理程序替换为使用 TestServer.CreateHandler() 提供的内存中处理程序:

app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
Authority = "http://localhost:54540/",
RequireHttpsMetadata = false,
ClientId = "myClient",
ClientSecret = "secret_secret_secret",
BackchannelHttpHandler = server.CreateHandler()
});

注意:同样的方法也适用于 JWT 承载中间件和 aspnet-contrib 自省(introspection)中间件。

关于asp.net-core - 使用 TestServer 托管 ASOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42931629/

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