上下文
对于我们的一位客户,我正在实施新的身份验证和授权策略。我们管理他们的一个应用程序,该应用程序用于根据以下条件进行访问验证:
现在,由于某些事情已经改变,基于IP的验证不再是一种选择。因此,我建议我们的客户在完成完整的Office 365迁移后,应实施基于令牌的授权,并且所有他们各自的用户现在都在Azure AD中。我只需在AAD中注册应用程序和服务,并将用户添加到可以分配令牌的用户即可。 现在将使用ADAL将令牌保存到令牌缓存中的本地计算机中,并且每X天将提示他们登录一次以获取新令牌。(每次调用时都会将令牌发送给WCF服务和经过验证的服务器客户)认为解决方案无法满足他们的要求。他们希望一次性登录,而不是要求用户定期登录,这样才能永久授予他们访问权限。
问题
不幸的是,我无法想到如何实现这一目标的标准化方法。因此,我创建了一个自定义身份验证策略。我想知道从安全角度来看我的身份验证策略是否足够。
现在我需要一些建议,可以基于计算机GUID和用户的电子邮件地址进行验证吗?
该应用程序是Outlook加载项。 (没有Office365 API,否则我不会遇到这个问题) 我现在计划要做的是获取计算机的GUID并获取Outlook中的当前活动用户。 (这只能是也在CRM中注册的电子邮件)。 这是遵循的流程;
在打开Outlook并加载加载项时,加载项将向WCF服务发送一个简单请求,以查看用户是否已在数据库中注册。这是通过将标识标头添加到肥皂信封中并存储包含用户电子邮件和计算机GUID的双重加密字符串来完成的。
当服务器接收到此请求时,它将检查身份标头的有效性。如果此步骤失败,则将提示客户端登录其O365帐户,以从AAD接收令牌。
客户端成功登录后,客户端将立即向特定的注册用户功能(也由WCF托管)发送新请求。该请求包含通过针对AAD进行验证而传递给用户的令牌。
服务器将验证AAD令牌,如果验证成功,则在DB中注册计算机guid和用户电子邮件。在将其实际保存到数据库之前,将使用与用于将令牌从客户端到服务器的令牌传输密钥不同的密钥进行两次加密。
在客户端收到“注册成功”后,它将进行与开始时相同的调用,现在成功注册了用户和guid,如果失败,则将提示用户再次登录
WCF服务中的每个功能都要求提供Identity标头,并且内容有效,否则,该功能将不会给出任何信息。
我希望有人能就此事给我一些意见或反馈。