Windows应用商店8.1应用程序Azure ADAL脱机客户端身份验证

Windows应用商店8.1应用程序Azure ADAL脱机客户端身份验证,azure,authentication,azure-active-directory,adal,Azure,Authentication,Azure Active Directory,Adal,我正在构建一个Windows 8.1应用商店应用程序,需要合并身份验证。这是一个在内部使用的企业应用程序。我们将应用程序加载到平板电脑上,一个团队可能会一次检查该平板电脑数周,然后到现场收集数据,然后我们将其放在架子上,直到另一个团队需要使用它。现在,不同的团队可能为不同的客户端工作,因此当我们验证用户时,他们不仅可以访问应用程序,而且我们还可以检查他们所在的组,以确定他们可以处理哪些客户端,或者他们可以搜索哪些以前的记录 我遵循了各种ADAL教程,能够在Azure中设置所有内容,在我的应用程序

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

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

似乎它们不可用,因为指南总是指出让应用程序处理用户名/密码是一个危险的提议。我理解这一立场,也理解其背后的谨慎。然而,在我找到的所有ADAL文档中,都没有告诉我如何处理脱机身份验证场景

我已经找到了这样的链接,告诉我如何绕过ADAL登录页面。我可能需要转到该路径,并在应用程序中安全地处理所有用户名/密码,但首先我想联系其他人,看看其他人如何处理这种情况。它真的像避免最佳实践那样简单,只是在应用程序中处理用户名/密码吗

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

其他信息:

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


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

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

这取决于您如何处理令牌,如果应用程序脱机并在一段时间后重新连接,您可以从某处获取令牌,并检查其是否过期,如果未过期,你仍然可以使用该令牌。我有一个用户第一次需要使用应用程序在线登录。在初始登录期间,我希望存储他们的组,以及可以从graph API获得的用户信息,以使脱机登录正常工作。第二天,用户进入现场(没有可用的internet),并且没有缓存未过期的令牌。这要求他们再次输入凭据。我怎样才能让那个人用用户名/密码再次登录?对我来说,ADAL只能通过UserPassworedCredentail在这种情况下工作,这意味着我需要在本地数据存储中保存该用户凭据。请阅读我原始帖子的“附加评论”部分。我已经更详细地解释了我的场景,解释了为什么我认为这样做行不通。您给我的指导对于基于消费者的应用程序或BYOD企业应用程序很有意义。您的场景应该由您的代码控制。1) 当有互联网时,用户可以使用ADAL登录azure ad,将所有用户/组信息保存到您自己的数据库中。2) 当没有internet时,你的应用程序需要通过检查你自己数据库中的用户凭据来登录新用户,你不能使用ADAL,因为需要internet与Azure AD通信3)你的应用程序控制用户会话,你可以注销2h后没有活动的用户。脱机时,您的场景应控制应用程序中的用户凭据检查。