2017-04-04 64 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保護它是毫無意義的。