1

我已經使用「Microsoft.AspNetCore.Authentication。*」軟件包的服務爲我的asp.net核心項目配置了Azure AD身份驗證。該項目預計將作爲Web應用程序部署到Azure應用程序服務。用於Asp.Net核心的Azure AD身份驗證

雖然我啓用了Azure AD身份驗證,但我還看到有一個選項可通過Azure門戶上的應用程序設置在Web應用程序級別啓用相同的選項。

enter image description here

我身邊有哪些選項建議的問題。我確實看到,當我不利用通過nuGet包配置的Azure AD身份驗證時,我沒有將OpenId連接服務插入到StartUp.cs文件中。我認爲這些服務在填充像User.Identity.Name這樣的認證屬性中很關鍵。另一方面,只有啓用了門戶的身份驗證,我沒有看到這個信息填充。因此,我認爲如果我想用登錄的用戶身份進行進一步的工作,比如利用當前的聲明信息進行授權,那麼使用僅限於門戶網站的身份驗證將無法實現這一目標。

+0

我相信「僅門戶」是OAuth。 OAuth將像第三方登錄提供程序一樣處理,因此您需要在應用程序中使用實際用戶對象來將該登錄與之關聯。 OAuth中的用戶信息來自聲明。您基本上會使用用戶聲明來創建/查找適當的用戶對象,然後簽署該用戶,就像使用Twitter,Facebook等一樣。 –

+0

謝謝Chris!聽起來像我應該仍然能夠基於收到的聲明創建一個用戶對象。我在兩種情況下都通過提琴手檢查了答案,並且可以看到相同的結果集。這表明我通過nuGet軟件包添加的框架服務正在簡化這項任務,並負責生成用戶對象。如果我想要與啓用了門戶的身份驗證一樣,我將不得不設置必要的對象。 –

+0

我沒有'與Azure AD一起工作,但基於我對OpenID的瞭解,不同之處在於用戶對象完全是OpenID外部的。它的功能與SSO類似,網站只是信任來自認證源的數據。 OAuth是一個不同的野獸。它更多的是認證因素。 –

回答

1

您的評估基本正確。啓用了門戶的身份驗證完全在您的應用程序之外運行,並且在使用.NET Core時(該級別的集成僅適用於ASP.NET 4.x)無法設置User.Identity.Name

我的建議是使用ASP.NET Core NuGet包,以便您可以獲得完整的集成。設置起來還有很多工作要做,但一旦你開始工作,你應該保持良好的狀態,並獲得你想要的完整的端到端體驗。

如果您有興趣使用支持門戶的Azure AD身份驗證支持,請查看this StackOverflow question以瞭解如何使其與User.Identity.Name配合使用。

+0

謝謝克里斯!我已經有了一個集成的代碼,但我想知道兩者之間的區別。 –