我有一个基于OpenIdDict
的{{1}}身份验证服务器。设置按预期工作。
现在要做一些进程集成;跨越整个后端架构的系统测试我使用AspNet.Security.OpenIdConnect.Server
类。
为什么我这样测试是另一个问题
当我调用我的资源服务器的web api端点时,授权要加载TestServer
但是失败。
{" IDX10803:无法从以下位置获取配置:' http://localhost/.well-known/openid-configuration'。"})
这是我用于测试环境的OpenIdConnectSettings:
我可以让服务器发出配置,还是可以通过其他方式提供配置?
答案 0 :(得分:4)
TestServer
需要注意的重要一点是,所有内容都发生在内存中:没有打开套接字来处理应用程序可能发送的HTTP请求。
不幸的是,OpenID Connect客户端中间件(内部使用HttpClient
)无法知道并试图发送"真正的"对OpenIddict的HTTP请求以检索发现文档。
要解决此问题,建议的方法是替换OIDC中间件使用的默认反向通道处理程序,以使用TestServer.CreateHandler()
提供的内存处理程序:
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
Authority = "http://localhost:54540/",
RequireHttpsMetadata = false,
ClientId = "myClient",
ClientSecret = "secret_secret_secret",
BackchannelHttpHandler = server.CreateHandler()
});
注意:同样的方法也适用于JWT承载中间件和aspnet-contrib内省中间件。