Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以选择将Azure AD身份验证与aws中托管的现有基于Java的web应用程序集成?_Java_Android_Azure_Azure Active Directory_Adal - Fatal编程技术网

是否可以选择将Azure AD身份验证与aws中托管的现有基于Java的web应用程序集成?

是否可以选择将Azure AD身份验证与aws中托管的现有基于Java的web应用程序集成?,java,android,azure,azure-active-directory,adal,Java,Android,Azure,Azure Active Directory,Adal,我们在AWS中运行移动应用程序后端。后端构建使用Java spring前端,支持本机iOS、本机Android和基于angular js的网站,使用电子邮件id和密码进行身份验证。现在,我们正计划将我们的应用程序身份验证与我们的组织Active directory集成,后者在Azure AD中提供 我们大致了解了Azure门户应用程序的创建,使用ADAL库从Azure获取令牌。但我们不清楚如何在web服务端验证令牌。您能告诉我们集成过程吗?不幸的是,Azure AD目前在Java中没有很好的we

我们在AWS中运行移动应用程序后端。后端构建使用Java spring前端,支持本机iOS、本机Android和基于angular js的网站,使用电子邮件id和密码进行身份验证。现在,我们正计划将我们的应用程序身份验证与我们的组织Active directory集成,后者在Azure AD中提供


我们大致了解了Azure门户应用程序的创建,使用ADAL库从Azure获取令牌。但我们不清楚如何在web服务端验证令牌。您能告诉我们集成过程吗?

不幸的是,Azure AD目前在Java中没有很好的web API安全指南。然而,在这种情况下,采用开源方法并不十分困难

Azure AD的访问令牌是JWT,基本上只是带有签名的base64编码JSON字符串。已经编译了一个很好的开源库列表,可以用来验证JWT(一些库也可以生成JWT,仅供参考)。目前可用的最佳参考资料是:

  • 必要时列出的声明(仅忽略关于id_令牌的注释,这是不正确的)
  • 在如何验证令牌方面,也有一些好消息。您还应该确保验证
    范围
    声明,此处不会提及该声明
  • 这显示了如何采用这种方法,但它是在.NET中实现的。您可以遵循Java的模式
最困难的部分是可靠地获取、缓存和刷新Azure AD公共签名密钥,确保您的应用程序能够处理密钥滚动,例如,每24小时刷新一次密钥,并在签名验证失败时立即刷新密钥。大多数JWT库不会为您这样做。签名密钥可通过Azure AD的OpenID Connect元数据端点获得

https://login.microsoftonline.com//.well-known/openid-configuration


OpenID Connect规范还提供了关于可用数据格式的信息

我在寻找同一个问题,在这里绊倒了。我仍然不理解令牌验证部分。我知道JWT令牌可以使用来自AD的密钥进行解密。但服务器如何知道这些密钥呢?我们是否必须使用任何api从AD检索密钥,或者密钥是我们在AD中注册应用程序时可以获得的静态值。