2017-01-10 38 views
0

我的網站作爲應用服務部署到Azure。它使用Azure的Google身份驗證提供程序設置了Google身份驗證。使用Google身份驗證的應用服務 - 列出用戶

是否可以列出通過Google帳戶訪問我的網站的用戶(至少名稱和電子郵件地址)?

+0

您是否在存儲有關經過身份驗證的用戶訪問您網站的信息? –

+0

谷歌oauth身份驗證不是由我在我的網站上實施的。我使用Azure的buildin Google身份驗證提供程序(https://docs.microsoft.com/zh-cn/azure/app-service-mobile/app-service-mobile-how-to-configure-google-authentication)。我不知道,Azure如何存儲有關用戶的信息。 – Plaz

回答

1

您可以在登錄時獲取有關登錄到您的Web應用程序的用戶的信息。但是,App Service不會自動存儲此信息,您可以通過這種方式查詢所有用戶。這取決於您以後可以查詢的方式存儲用戶信息。如果您想弄清楚如何獲取每個用戶的信息,請參閱下文。

一個選項是使用x-ms-client-principal-name請求標頭獲取登錄用戶的顯示名稱。如果您需要更多信息,您可以獲取已登錄用戶的一組「聲明」。有幾個方法可以做到這一點:

  1. 如果您正在使用ASP.NET(完整的框架),你可以使用ClaimsPrincipal.Current靜態屬性,以獲取有關當前用戶的信息。特別是,Claims屬性將包含幾個不同的屬性。
  2. 無論您使用何種語言/框架,都可以向Web應用程序的/.auth/me端點發出HTTP請求,以獲取App Service自動捕獲的有關登錄用戶的信息。這通常會和#1一樣。這個HTTP調用需要使用與訪問該站點相同的機制進行認證。
  3. Google有一組API可供您調用以獲取有關用戶的詳細信息。要訪問這些API,您需要一個訪問令牌,您可以從x-ms-token-google-access-token HTTP請求標頭獲取該令牌。

在所有情況下,您都需要確保在門戶中配置Google身份驗證時啓用了正確的範圍。這最終將控制哪些信息可用於您的應用程序。用戶第一次登錄時,系統會要求他們同意授予您的應用訪問此信息的權限。一旦同意,您將在每次登錄時訪問最新信息。

+0

非常感謝克里斯對你的出色答案 – Plaz

相關問題