Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 需要使用identity server 4在ios(safari和chrome)上诊断无限循环身份验证的指南_Asp.net Core_Identityserver4_Openid Connect - Fatal编程技术网

Asp.net core 需要使用identity server 4在ios(safari和chrome)上诊断无限循环身份验证的指南

Asp.net core 需要使用identity server 4在ios(safari和chrome)上诊断无限循环身份验证的指南,asp.net-core,identityserver4,openid-connect,Asp.net Core,Identityserver4,Openid Connect,我在identity server 4(部署为Azure应用程序服务)和移动设备上的身份验证方面遇到了一个奇怪的问题。我正在使用OpenId connect.NET core MVC客户端对我的身份服务器(配置了AspNetIdentity)进行身份验证。这在桌面浏览器上运行绝对正常,但在iphone上,当我登录时,它会进入一个无限循环,在id服务器和客户端(使用mobile safari或chrome)之间返回第四个循环 如果我停止循环并中断,然后导航到该站点,我将通过身份验证,这表明cook

我在identity server 4(部署为Azure应用程序服务)和移动设备上的身份验证方面遇到了一个奇怪的问题。我正在使用OpenId connect.NET core MVC客户端对我的身份服务器(配置了AspNetIdentity)进行身份验证。这在桌面浏览器上运行绝对正常,但在iphone上,当我登录时,它会进入一个无限循环,在id服务器和客户端(使用mobile safari或chrome)之间返回第四个循环

如果我停止循环并中断,然后导航到该站点,我将通过身份验证,这表明cookie已经发出

奇怪的是,我有一个几乎相同的设置,但没有这种行为的另一个系统。由于没有错误,而且我只能在我的登台环境中的移动设备上复制,我发现很难找出诊断问题的步骤,或者我应该在哪里查找

我不会发布大量的声明或任何会让饼干膨胀的东西

这与identity server 3的问题几乎相同:


任何关于我应该在这里查找的内容的指针都会很好。

如果使用默认配置,iOS12 Safari中的一些更改会中断oidc登录。 详情如下:

如果您使用的是ASP.NET核心标识,则通过以下方式禁用保护: 使用以下代码配置cookie

如果您使用的是没有ASP.NET核心标识的cookie身份验证 您可以使用以下代码关闭保护

如果使用外部OIDC提供程序,则可以避免 通过将提供商使用的响应模式从POST更改为 GET请求,使用以下代码。并非所有提供商都可以支持 这个

_请注意,在进行这些更改时,将删除对所有用户和所有浏览器的保护。你应该确保你的所有行动 通过构建CSRF防伪机制保护状态更改 进入ASP.NET内核


由此引起的:干杯@JoeAudette,这是一个很好的阅读,我会看看我能用这些信息做些什么。非常感谢,这让我今天非常疯狂!这很有效@JoeAudette,救生员谢谢你。如果你想得到堆栈溢出点,你可以将其作为答案。我已经发布了详细信息作为答案,谢谢!
services.ConfigureExternalCookie(options =>
{
    // Other options
    options.Cookie.SameSite = SameSiteMode.None;
});
services.ConfigureApplicationCookie(options =>
{
    // Other options
    options.Cookie.SameSite = SameSiteMode.None;
});
services.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
{
    // Other options
    options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
});
.AddOpenIdConnect("myOIDProvider", options => {
    // Other options
    options.ResponseType = "code";
    options.ResponseMode = "query";
};