通过Iphone身份验证的用户不会重定向到应用程序



我使用的是带有IdentityServer4的AspNetCore 2.2.0。

问题/重现问题的步骤我正在使用IPhone进行"使用苹果登录"。点击本机应用程序中的登录按钮会打开一个登录网页,该网页位于windows docker容器中。在登录网页上,点击"使用苹果登录"会显示IOS原生弹出窗口,继续使用已与应用程序链接的帐户或"使用不同的苹果ID"。当点击"继续"按钮时,会显示一个白色屏幕,该屏幕在applei.apple.com上冻结,并且不会发生任何事情。IPhone本机弹出式点击continue会在白色屏幕中显示结果此外,如果该应用程序在第一次运行之前没有与任何苹果ID链接,那么它也会正常工作。按照上述步骤注销并尝试登录时,会出现白色屏幕。"使用不同的Apple ID"流程运行良好。我不确定我的代码或IdentityServer4中是否有任何错误。根据日志,从苹果收到了callback/connect/authorize/recallback,但它不会反映在浏览器上。非常感谢您的帮助。

日志文件的相关部分trce:IdentityServer4.ResponseHandling.AuthorizeInteractionResponseGenerator[0]ProcessInteractionAsyncdbug:Equinox.Account.Services.EquinoxProfileService[0]IsActive调用自:AuthorizeEndpointdbug:IdentityServer4.Services.DefaultConsentService[0]客户端配置为不需要同意,不需要同意dbug:IdentityServer4.Endpoints.AuthorizeCallbackEndpoint[0]dbug:IdentityServer4.响应处理.授权响应生成器[0]正在创建混合流响应。dbug:Equinox.Account.Repositories.PersistedGrantsRepository[0]MAbolcoMM9bi+QcW7FVOgryzkOBZXiPRzpw4R1UAWk=在数据库中找不到dbug:IdentityServer4.响应处理.授权响应生成器[0]正在创建隐式流响应。trce:IdentityServer4.Services.DefaultTokenService[0]正在创建身份令牌dbug:IdentityServer4.Services.DefaultClaimsService[0]正在获取主题的身份令牌声明:test@testmailid.com和客户端:mymobileappdbug:Equinox.Account.Services.EquinoxProfileService[0]获取为主题调用的配置文件test@testmailid.com来自客户端mymobileapp,声明类型为生日、家庭名称、性别、给定名称、区域设置、中间名、姓名、昵称、图片、首选用户名、个人资料、更新日期、网站、区域信息、电子邮件、通过ClaimsProviderIdentityToken验证的电子邮件dbug:Equinox.Account.Services.EquinoxProfileService[0]已发布声明:电子邮件、电子邮件验证、家庭名称、给定名称、区域设置、mosoid、昵称、oid、图片、首选用户名、共享ID、跟踪ID、更新日期、用户ID、区域信息trce:IdentityServer4.Services.DefaultTokenService[0]正在创建JWT身份令牌trce:IdentityServer4.Endpoints.AuthorizeCallbackEndpoint[0]为mymobileapp颁发的身份令牌(未设置名称)/test@testmailid.com:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE1ODU5MDg5MjAsImV4cCI6MTU4NTk5NTMyMCwiaXNzIjoiaHR0cHNcdTAwM2FcdTawMmZcdTAwMmMmZxYVx1MDAyZGxvZ2luXHUwMDJlZXF1aW5veFx1MDAyZWNvbSImF1ZCI6ImVxeG1vYmlsZWFwcCIsIm5vbmNlIjoiQIxHUwMDI0OVx1MDAyM1 x1MDAzZlpIUUp5N1U4IwiaWF0IjoxNTg1OTA4OTIwLCJjXHUwMDVmaGFzaCI6InVLVWxcdTawNWtrce:IdentityServer4.Endpoints.AuthorizeCallbackEndpoint[0]为mymobileapp发布的代码(未设置名称)/test@testmailid.com:swsDKcMd78uWqcuqIA3h6KEk4v3GS1Mlinfo:IdentityServer4.Endpoints.AuthorizeCallbackEndpoint[0]授权端点响应{主题ID:"test@testmailid.com",客户端ID:"mymobileapp",RedirectUri:"我的mobileapp://oauthredirect",作用域:"openid配置文件电子邮件offline_access"}trce:IdentityServer4.Endpoints.AuthorizeCallbackEndpoint[0]结束授权请求。结果类型:IdentityServer4.Endpoints.Results.AuthorizeResulttrce:IdentityServer4.Hosting.IdentityServer中间件[0]调用结果:IdentityServer4.Endpoints.Results.AuthorizeResultdbug:IdentityServer4.主机.IdentityServerAuthenticationService[0]增强SignInContextdbug:Equinox.Account.Repositories.PersistedGrantsRepository[0]8RotaoHQ32K7iyNlN61q0700M47i1Fx0未在数据库中找到

更新:我仍在努力解决这个问题。经过进一步调试,结果发现,当自定义端点"auth/apple"删除authcookie创建时,重定向发生在登录页面上——很明显,如果没有身份验证,控件将转到登录页面。否则,将出现白色屏幕。以下是的代码片段

AuthenticationProperties props = null;
HttpContext.SignInAsync(account.Username, account.Username, props).Wait();

什么可能导致白屏幕由于authcookie是相当令人惊讶的。如果有人能提出任何建议,我将不胜感激?

由于Safari浏览器的安全性,问题得到了解决,并显示了白色屏幕。由于cookie是从applei.apple.com创建到我的主机login.mysite.com的。虽然cookie正在创建(如charles会话中所示),但进度被阻止,并显示白色屏幕。我创建了一个间歇性的不可见表单,并将数据从我的域发布到流中,然后继续执行相同的步骤,这解决了问题。发布解决方案,以防有人在"登录苹果"流程中遇到同样的问题。

最新更新