【发布时间】:2018-07-03 01:08:53
【问题描述】:
我们将 ASP.NET Identity 与 IdentityServer4 一起使用。我们添加了一个与 Azure AD 一起使用的客户端。这在网页中效果很好,该部分正在工作。
我们的最终目标是 UWP 应用,因此我们找到了包含 UWP 示例的 IdentityModel.OidcClient。此示例有两个浏览器类。我们配置了 HTTPS,但 WabBrowser 类现在完全拒绝连接到该站点。如果我将配置更改为点击https://demo.identityserver.io 那么它可以工作,但所有其他配置都是相同的,所以我不确定问题可能是什么。它在弹出的浏览器中显示无法连接的错误消息。
我查看了 SystemBrowser 类,但是这个登录正常,然后浏览器窗口没有关闭,即使我们关闭它,代码也不会继续返回结果。看源码,这并不奇怪,它调用:
Launcher.LaunchUriAsync(new Uri(options.StartUrl));
仅此而已。 RedirectUri 未传入,并且似乎存在使用它的机制。所以,我们看到的行为似乎是类可以做的程度。
查看控制台 .NET Core 示例,它有一个可以工作的 SystemBrowser 类。我更新了 UWP 示例以使用 Fall Creators Update,并且能够引入编译此代码所需的 ASP.NET Core dll。它设置了一个这样的类:
public LoopbackHttpListener(int port, string path = null)
{
path = path ?? String.Empty;
if (path.StartsWith("/")) path = path.Substring(1);
_url = $"http://127.0.0.1:{port}/{path}";
_host = new WebHostBuilder()
.UseKestrel()
.UseUrls(_url)
.Configure(Configure)
.Build();
_host.Start();
}
我可以确认它只被调用一次,但即使我硬编码一个未使用的 IP 地址,我也会收到一个错误,表明该 IP 正在使用中。
因此,在这个阶段,UWP 存在的示例适用于演示服务器,但不适用于我们的服务器(我怀疑是 HTTPS 问题,但这不是我得到的错误),并导入适用于 Core 示例的代码,也不起作用。我在这方面花了几天时间,希望能朝着正确的方向轻推。
所以,回顾一下,WabBrowser 似乎是最好的选择,但是,对于我的本地主机 IdentityServer,我得到了这个:
如果我尝试使用在其他地方工作的 .NET Core 库,它会认为某个端口正在使用中。我怀疑我需要弄清楚为什么 WabBrowser 无法连接到我的本地站点。我已经关闭了提琴手。我可以浏览到我的 https URL 并在浏览器中的https://localhost:44305/.well-known/openid-configuration 获取一个迪斯科文档。
【问题讨论】:
标签: .net-core identityserver4 openid-connect