Windows应用商店8.1 App Azure ADAL离线客户端验证

时间:2017-05-17 19:42:31

标签: azure authentication azure-active-directory adal

我正在构建Windows 8.1商店应用,需要合并身份验证。这是一个内部使用的企业应用程序。我们将应用程序加载到平板电脑上,团队可以一次检查该平板电脑数周,前往现场收集数据,然后我们将其放入架子,直到另一个团队需要使用它。现在,不同的团队可以为不同的客户工作,因此当我们对用户进行身份验证时,他们不仅可以访问应用程序,还可以检查他们所在的群组,以确定他们可以处理哪些客户端或他们可以搜索的先前记录。

我已经遵循了各种ADAL教程,并且能够在Azure中设置所有内容,并且在我的应用中,我能够成功验证用户并获取他们的群组。这依赖于ADAL处理用户名/密码。当应用关闭并且用户处于没有互联网(甚至是可靠的小区连接)的地方时会发生什么?具体来说,如何让用户键入用户名/密码以重新进行身份验证,并获取他们无法访问Azure服务时所在的组?

似乎它们不可用,因为指导始终指出让应用程序处理用户名/密码是一个冒险的主张。我理解这种立场并且可以理解它背后的谨慎。但是,在我发现的所有ADAL文档中,没有一个告诉我如何处理脱机身份验证方案。

我找到了ADAL v3: How to authenticate using UserPasswordCredential?等链接,告诉我如何绕过ADAL登录页面。我可能不得不转移到该路线并在应用程序中安全地处理所有用户名/密码,但首先我想伸出手来看看其他人如何应对这种情况。它是否真的像避免最佳实践一样简单,只需处理应用程序中的用户名/密码?

如果有人有一些指导,ADAL(或其他oauth提供商)文档或其他文章/建议,我可以跟进以帮助实现离线身份验证,我将非常感谢!

其他信息:

我尝试覆盖的情景是当我有1台设备,1个应用和许多不同的用户时会发生什么?这些用户将位于不同的组中,这些组将确定如何填充数据字段(在组合框中过滤数据)以及他们可以查询的先前提交的表单。所有用户都需要在线登录才能在他们使用该应用之前缓存他们的信息(比如第0天)。在第1天,用户1使用该应用程序并且不会注销。我希望应用程序有一个超时计时器,可以在没有活动2小时后将该用户注销。在第2天,用户2只是将设备从架子上抓起并将其带到现场。他没有互联网,需要登录才能确定他们是谁以及他们所在的群体。我希望他已登录一次并验证他的证书,我们可以启用这种情况。

如果ADAL作为一个库可以处理这个问题,那么我正在寻找的是指导,还是应用程序开发人员真正应对这种情况。我目前看到它需要存储所有用户凭据,但同时似乎每个人都建议不要这样做。我觉得我在需要创建自定义登录屏幕并存储用户数据的情况下,当然是安全的,即使它不推荐。似乎所有关于如何使用ADAL的文章都是从消费者应用程序的角度(或BYOD)编写的,并没有考虑如何为企业编写移动应用程序。

1 个答案:

答案 0 :(得分:0)

这取决于您的应用程序设计,如果第一次(在线应用),用户登录和应用程序存储所有组,用户信息。之后该用户不需要使用令牌再次获取相关信息(向服务器发送请求)获取组/用户信息)。如果应用程序处于脱机状态,则用户无需重新进行身份验证(应用程序控制用户会话),只需从缓存中获取组/用户信息即可。使用资源所有者流时,您仍需要向需要Internet的Azure AD服务器发送身份验证请求。