如果我有一個使用Azure Active Directory進行保護的API,當外部API想要與我的內部API進行對話時,流程是什麼?外部API的調用我的API使用Azure Active Directory進行保護
這是一個API調用API的正常或這是一個特殊的情況,需要處理不同的方式?
如果我有一個使用Azure Active Directory進行保護的API,當外部API想要與我的內部API進行對話時,流程是什麼?外部API的調用我的API使用Azure Active Directory進行保護
這是一個API調用API的正常或這是一個特殊的情況,需要處理不同的方式?
這只是一個API的API調用正常或這是一個特殊的情況下,需要處理不同的方式?
特殊情況可能取決於這些api提供的資源的機密性和應用程序所需的安全級別。最後,它只能用於API調用。
如果Azure Active Directory(AAD)是整個應用程序的標識提供程序,則可以使用兩種方法。
AAD提供的具有OAuth 2.0客戶端憑據授權的應用程序標識。調用API使用其客戶端ID,客戶端密鑰(憑證)和應用程序ID(被調用程序API的唯一ID)向AAD令牌端點發出請求,以接收訪問令牌作爲響應。該令牌用作不記名令牌來調用下游API。在這種方法中,爲訪問令牌交換的客戶端ID,客戶端祕密,應用程序ID是靜態值。有人能夠訪問這些值可能會發現一種危害應用程序安全性的方式(極不可能)。
第二種方法是使用OAuth 2.0的委託用戶身份。向AAD令牌終端發出請求,其中包含客戶端ID,客戶端密鑰,作爲調用tier1 API的一部分接收的訪問令牌以及用於接收訪問令牌的特殊on_behalf_of參數,將令牌刷新爲響應。我們更喜歡這種方法,因爲它使用動態值(來自tier1 api的訪問令牌),並且還提供了一個刷新令牌。
你可以閱讀更多有關這些方法here
如果你不想使用AAD,就可以使用內置的OwinAuthenticationMiddleware生成和驗證自己的訪問令牌asp.net。如前所述,這一切都取決於您的應用程序需求和實現細節,但最終它是API調用的API。
希望這是有幫助的,請讓我知道如果您有任何問題。
謝謝, Soma。
oAuth已完成對登錄用戶到web服務(see also reference here)。
使用OAuth爲用戶提供對數據的訪問權限,同時保護他們的帳戶憑證。
作爲另一個Web服務要消耗你的服務的一個這樣做的最好的辦法是有另一種身份驗證方法,以便授權
其他API,我假設你正在談論的機器,而不是用戶(別名人類)。 所以最好的方法是提供另一個認證機制,以授權機器以安全的方式連接到您的API。 執行機器連接的簡單方法是使用公鑰/私鑰私鑰PKI。 PKI的一個很好的參考:http://docs.oracle.com/javase/6/docs/technotes/guides/security/certpath/CertPathProgGuide.html