快速入門:登入 Microsoft Entra 使用者的 ASP.NET Web 應用程式
歡迎! 這可能不是您預期的頁面。 當我們處理修正程式時,此連結應會將您導向至正確的文章:
當我們努力解決問題時,也對您的不便深感抱歉,並感謝您的耐心等候。
在本快速入門中,您會下載並執行範例程式碼,該範例會示範可使用 Microsoft Entra 帳戶登入使用者的 ASP.NET Web 應用程式。
步驟 1:在 Azure 入口網站中設定您的應用程式
若要讓此快速入門中的程式碼範例正常運作,請對於 [重新導向 URI] 輸入 https://localhost:44368/。
您的應用程式已使用此屬性進行設定。
步驟 2:下載專案
使用 Visual Studio 2019 執行專案。
提示
為了避免 Windows 中路徑長度限制所造成的錯誤,建議您將封存解壓縮或將存放庫複製到磁碟機根目錄附近的目錄中。
步驟 3:您的應用程式已設定並準備好執行
我們已使用您的應用程式屬性值來設定您的專案。
將 .zip 檔案解壓縮至接近根資料夾的本機資料夾。 例如,將解壓縮至 C:\Azure-Samples。
建議您將封存解壓縮到磁碟機根目錄附近的目錄中,以避免因 Windows 的路徑長度限制而造成錯誤。
在 Visual Studio 中開啟解決方案 (AppModelv2-WebApp-OpenIDConnect-DotNet.sln)。
視 Visual Studio 的版本而定,您可能需要以滑鼠右鍵按一下專案 >AppModelv2-WebApp-OpenIDConnect-DotNet,然後選取 [還原 NuGet 套件]。
選取 [檢視]>[其他視窗]>[套件管理員主控台],以開啟套件管理員主控台。 接著,執行
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
。
注意
Enter_the_Supported_Account_Info_Here
其他相關資訊
本節會概述登入使用者所需的程式碼。 本概觀有助於了解程式碼的運作方式、主要引數為何,以及如何將登入新增至現有的 ASP.NET 應用程式。
此範例的運作方式
OWIN 中介軟體 NuGet 套件
您可以使用 OWIN 中介軟體套件在 ASP.NET 中搭配 OpenID Connect,設定具 Cookie 型驗證的驗證管線。 您可以在 Visual Studio 內的套件管理員主控台執行下列命令,以安裝這些套件:
Install-Package Microsoft.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb
OWIN 啟動類別
OWIN 中介軟體使用啟動類別,此類別會在裝載程序啟動時執行。 在本快速入門中,startup.cs 檔案位於根資料夾中。 下列程式碼顯示此快速入門所使用的參數:
public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
// Sets the client ID, authority, and redirect URI as obtained from Web.config
ClientId = clientId,
Authority = authority,
RedirectUri = redirectUri,
// PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it's using the home page
PostLogoutRedirectUri = redirectUri,
Scope = OpenIdConnectScope.OpenIdProfile,
// ResponseType is set to request the code id_token, which contains basic information about the signed-in user
ResponseType = OpenIdConnectResponseType.CodeIdToken,
// ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
// To only allow users from a single organization, set ValidateIssuer to true and the 'tenant' setting in Web.> config to the tenant name
// To allow users from only a list of specific organizations, set ValidateIssuer to true and use the ValidIssuers parameter
TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = false // Simplification (see note below)
},
// OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to > the OnAuthenticationFailed method
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = OnAuthenticationFailed
}
}
);
}
其中 描述 ClientId
來自註冊於 Azure 入口網站中之應用程式的應用程式識別碼。 Authority
使用者進行驗證的 Security Token Service (STS) 端點。 這通常是用於公用雲端的 https://login.microsoftonline.com/{tenant}/v2.0
。 在該 URL 中,{tenant} 是您租用戶的名稱、您的租用戶識別碼,或通用端點之參考的common
。 (通用端點用於多租用戶應用程式。)RedirectUri
在使用者針對 Azure 身分識別平台完成驗證之後,會被送往的 URL。 PostLogoutRedirectUri
在使用者登出之後,會被送往的 URL。 Scope
所要求之範圍的清單 (以空格分隔)。 ResponseType
要求驗證的回應包含授權碼和識別碼權杖。 TokenValidationParameters
用於權杖驗證的參數清單。 在此案例中, ValidateIssuer
是設為false
,以表示它可以接受來自任何個人或公司或學校帳戶類型的登入。Notifications
可在 OpenIdConnect
訊息上執行的委派清單。
注意
設定 ValidateIssuer = false
可簡化此快速入門。 在實際的應用程式中,請驗證簽發者。 請參閱範例以了解如何執行該動作。
驗證挑戰
您可在控制器中要求驗證挑戰,以強制使用者登入:
public void SignIn()
{
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties{ RedirectUri = "/" },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
}
提示
使用此方法要求驗證挑戰是選擇性的。 通常,您會在想要讓已驗證和未驗證的使用者都能存取檢視時,加以使用。 或者,您可以透過下一節所描述的方法來保護控制器。
保護控制器或控制器動作的屬性
您可以使用 [Authorize]
屬性來保護控制器或控制器動作。 此屬性會藉由僅允許已驗證的使用者存取控制器中的動作,來限制對控制器或動作的存取。 未驗證的使用者嘗試存取由 [Authorize]
屬性裝飾的其中一個動作或控制器時,就會自動發生驗證挑戰。
說明與支援
如果您需要協助、想要回報問題,或想要深入了解您的支援選項,請參閱 開發人員的協助與支援。
下一步
若要取得建置應用程式和新功能的完整逐步指南,包括本快速入門的完整說明,請嘗試 ASP.NET 教學課程。