-1

我正在使用Azure Active Directory來保護我的ASP.NET Core API和SPA應用程序。目前,我沒有使用客戶機密碼,這對SPA應用程序來說很好,因爲它可以在公共JavaScript中顯示。SPA應用程序中的Azure Active Directory客戶機祕密

如果我要將客戶端密鑰添加到其中一個API中,如何告訴Azure Active Directory我不想將我的SPA的客戶端密鑰用於其他應用程序,但是希望在我的其他API中使用它我正在向API調用API?

+0

您是否使用用戶憑證來保護您的API? –

+0

@CuongLe是的,Azure AD重定向到登錄頁面,用戶輸入他們的登錄信息並重定向回SPA應用程序。 –

+0

爲什麼不直接使用用戶名/密碼來獲取令牌而不是使用客戶端密鑰? –

回答

1

在這種情況下,您的API需要是Azure AD中的獨立應用程序。如果他們是同一個應用程序,客戶端祕密將從任何地方工作。

雖然實際上,因爲它是一個SPA,它可以使用祕密的唯一方法是通過AJAX,而Azure AD不支持CORS並阻止它。

即使它將來工作,它應該不用說,你不應該把你的客戶端祕密在客戶端代碼。這包括Web應用程序中的前端JavaScript和移動應用程序中的代碼。 (我知道這很清楚,但要確保其他人在後面閱讀答案也能理解這一點。)有人可以相對容易地從那裏獲取祕密,然後如果你的應用程序對某些API有權限,正在發生。

+0

不使用SPA的祕訣在於它們最終會在瀏覽器中顯示,對於加載SPA的所有人(包括攻擊者)都是可見的;這與AJAX無關或者如何使用。 –

+0

是的,顯然。 OP也很清楚。我只是簡單地說,即使你想要,你實際上也無法做到這一點。無論如何,我會將其添加到答案:) – juunas

相關問題