由Azure AD保护的Java Rest API

时间:2016-06-20 14:28:29

标签: java rest azure

我有一个角度应用程序,它调用java rest api来获取数据。我们需要通过azure AD保护这些应用程序。

我正在使用ADAL.js库进行角度应用,并尝试查找任何可用于休息api的库,但在互联网上找不到任何库。所有样本都是为使用Microsoft的OWIN框架的webAPi提供的。

目前我的理解是,我们的角度应用程序将调用Azure AD来获取访问令牌,并将其发送到java rest api。 它是由RSA私钥签名的JWT令牌。 我可以从JWKs uri获取公钥,并验证JWT令牌及其签名是否有效。如果它有效,其余的api会将响应发送回角应用程序   - 休息api方面是否足够?我们不需要Rest api和Azure AD之间的任何通信吗?如果有人窃取访问令牌并使用它(在其有效期内?)该怎么办? 我的印象是资源服务器(java rest api)还需要与授权服务器(Azure AD)交谈,但不确定JWT令牌是否真的需要它。

1 个答案:

答案 0 :(得分:0)

@ Deb,我发现你的需求与这个场景相匹配---- Web应用程序到Web API。我建议你参考这个文档( https://azure.microsoft.com/en-us/documentation/articles/active-directory-authentication-scenarios/#web-application-to-web-api)。如果您的前端使用Angular App,则可以使用passportjs来传递Azure AD授权。请参考documnet( https://azure.microsoft.com/en-us/documentation/articles/active-directory-devquickstarts-webapi-nodejs/#6-install-passportjs-in-to-your-web-api)。

  

它是由RSA私钥签名的JWT令牌。我可以获得公钥   来自JWKs uri并验证JWT令牌及其签名是否正确   有效与否。如果它有效,其余的api将发回响应   角度应用程序 - 在休息api方面是否足够?我们不需要任何   Rest api和Azure AD之间的通信?

如果您获得了access_token,则可以在请求中使用此令牌调用REST API。您无需在REST API和AAD之间进行任何通信。但请注意,您需要让您的API应用程序信任另一个应用程序

  

如果有人窃取访问令牌并使用它(在其中)   到期时间?)我的印象是资源服务器(   java rest api)还需要与授权服务器(Azure AD)交谈   但不确定JWT令牌是否真的需要它。

您还可以在应用程序中为令牌设置到期时间。请参阅本文档中的“令牌过期”部分(https://azure.microsoft.com/en-us/documentation/articles/active-directory-authentication-scenarios/#application-types-and-scenarios