2017-04-04 65 views
0

我有一个REST API,我从我的Web应用程序中调用以获得结果。我有一个客户端只需要我的API,但是我不能在没有任何安全性的情况下公开我的API。显然,我必须将其与我的应用程序一起使用,迄今为止API不安全,我希望我的客户端使用有效的凭据(无论是OAuth 2.0,JWT,证书还是一些额外的机制)来使用我的API。我怎样才能达到这个目标呢,任何使用Azure的Java工作例子都可以做到,它不应该妨碍我预先存在的使用API​​的WebApp出于自己的目的。非常感谢。使用OAuth2.0或Azure Active Directory保护REST API

+0

你考虑过API Geteway吗? https://azure.microsoft.com/en-gb/services/api-management/ –

+0

@MurrayFoxcroft我无法使用它,因为他们没有启用此功能的新门户。 – Mavericks

回答

0

使用Azure Active Directory很容易保护Web API。微软提供了大量的代码示例来帮助开发人员开始。

您可以参考下面的链接,为您的方案中的代码示例:

Azure Active Directory Code Samples

1

我试图做到这一点,我就算完成了任务,但最终发现,它并没有提供多少价值我案件。在我的情况下,API是通过长时间运行的后台任务进行访问的,因为人工登录不实用。现在,应用程序无法登录到Azure,它必须通过浏览器应用程序完成,该应用程序受到每种可能的自动登录方式的保护。除此之外,微软针对这类任务的解决方案是shared secret-protected token,这意味着应用程序和Azure共享一个秘密(由Azure生成的密码)。这与您存储和检查密码的情况没有显着差异。

除此之外,还有Azure Active Directory和Azure Active Directory v2.0的问题。这有点令人困惑,因为这两个解决方案都基于OAuth2.0令牌,但Azure AD v2.0实际上是一个非常不同的野兽。对于初学者,Azure AD v2.0令牌在编写此答案时无法解码,它们只能由Microsoft服务使用。因此,如果您想知道谁是已登录的用户,则需要将令牌传递给Graph API,并假设您拥有登录用户。对于Azure AD,令牌可以通过您的应用程序进行解码和验证,只有在您为其提供登录服务的应用程序是面向用户的应用程序时,我才推荐使用Azure令牌保护您的API用户在登录后进行交互。如果它是长时间运行的服务器类型任务,则使用Azure AD保护它是毫无意义的。