我们正在将Identity 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问题,但这不是我得到的错误),并导入适用于核心样本,也不起作用。我花了几天时间对此表示赞赏,并希望能朝着正确的方向努力。
所以,回顾一下,WabBrowser似乎是最好的选择,但对于我的localhost IdentityServer,我得到了这个:
如果我尝试使用在别处工作的.NET Core库,它会认为端口正在使用中。我怀疑我需要解决为什么WabBrowser无法连接到我的本地站点。我关掉了提琴手。我可以浏览我的https网址,并在浏览器中https://localhost:44305/.well-known/openid-configuration获取迪斯科文档。
答案 0 :(得分:0)
在Web身份验证代理中启用localhost需要额外的步骤 -
答案 1 :(得分:0)
This website给了我解决方法。这是一个提要:
出于安全性和可靠性的原因,不允许UWP应用程序向环回接口发送请求。尽管Visual Studio会自动为调试的应用程序创建免除项目,但此功能在这种情况下将无济于事,因为身份验证代理始终在单独的进程中执行。
如果您在Windows事件日志中看到此(错误的)错误消息,则很可能会遇到此问题:
AuthHost在URL上出现导航错误,状态代码为0x800C0005,网址为[...]。
解决此问题的一种方法是使用Eric Lawrence开发的环回豁免实用程序。它本身包含在Fiddler 4中,但也可以作为独立软件下载。要允许身份验证代理与环回接口进行通信,请从microsoft.windows.authhost开头的应用程序免除并保存您的更改:
如果一切配置正确,现在您应该会看到服务器返回的登录/同意页面。