IdentityServer脱机登录实践

时间:2019-08-22 15:11:00

标签: authentication xamarin asp.net-core xamarin.forms identityserver4

我知道这可能是一个非常不寻常的问题,但是我已经在.Net Core 2.1上使用IdentityServer 4相当一段时间了,它提供各种不同的API /客户端/移动应用程序,并始终“连接”互联网

现在,我遇到了一个有趣的场景,用户将可以访问Internet并能够通过IdentityServer进行一次身份验证,但是在X的时间量(X可能是分钟/小时/天)之后可能无法访问Internet。 ,但我仍然需要对该用户进行身份验证并登录才能使用该应用程序的“离线功能”(即使在关闭该应用程序之后)。

我曾考虑过缓存一些凭据以验证用户是否有效,或者考虑使用系统发送短信代码来验证用户的手机是否正确(但这仅适用于在移动设备上运行的应用程序)设备,因此不理想)。我仍然没有设置任何选项。

我只是想问问是否有人遇到过类似的问题,我们将不胜感激。请记住,使用该应用程序后,用户可能会注销,即使没有互联网连接,仍然需要进行身份验证。我非常喜欢IdentityServer4,因此我希望保持这种状态,而My App是使用Xamarin Forms(iOS,Android,UWP)开发的,IdentityServer实例位于云中。

非常感谢您的帮助,任何建议都将得到赞赏。

1 个答案:

答案 0 :(得分:1)

由于只有您的服务才能知道如何使用其服务器端凭据对某人进行身份验证,如何使用设备的本地安全平台功能(Secure Enclave,SafetyNet,无论Windows做什么)?

最终结果是,用户可以使用已配置的PIN /指纹/面部指纹来访问您的应用,所有这些都由防篡改的安全硬件支持。

这还为您提供了一个选项,允许用户通过解锁先前存储的刷新令牌来仅使用其本地凭据登录。例如,我的银行应用程序是这样工作的-默认情况下,现代手机确实非常安全。

如果想花哨的话,还可以在IdentityServer4服务中将他们的设备注册为WebAuthn身份验证器,然后在必要时他们可以使用相同的方法对服务器进行身份验证。