다음을 통해 공유


빠른 시작: Microsoft Entra 사용자에 로그인하는 ASP.NET 웹앱

환영! 이것은 아마도 당신이 기대했던 페이지가 아닐 것입니다. 수정 작업을 진행하는 동안 이 링크를 통해 올바른 문서로 이동해야 합니다.

퀵 스타트: ASP.NET 웹 애플리케이션에 Microsoft 로그인 기능 추가하기

이 문제를 해결하기 위해 노력하는 동안 불편을 끼쳐 드려 죄송합니다.

이 빠른 시작에서는 Microsoft Entra 계정으로 사용자를 로그인할 수 있는 ASP.NET 웹 애플리케이션을 보여 주는 코드 샘플을 다운로드하고 실행합니다.

1단계: Azure Portal에서 애플리케이션 구성

이 퀵스타트의 코드 샘플이 작동하려면 https://localhost:44368/을(를) 리디렉션 URI에 입력하세요.

나를 위해 이 변경을 해줘

애플리케이션이 이 특성으로 이미 구성되었습니다.

2단계: 프로젝트 다운로드

Visual Studio 2019를 사용하여 프로젝트를 실행합니다.

코드 샘플 다운로드

Windows의 경로 길이 제한으로 인한 오류를 방지하려면 보관 파일을 추출하거나 리포지토리를 드라이브 루트 근처의 디렉터리에 복제하는 것이 좋습니다.

3단계: 앱이 구성되고 실행할 준비가 된 경우

앱 속성 값을 사용하여 프로젝트를 구성했습니다.

  1. 루트 폴더에 가까운 로컬 폴더에 .zip 파일을 추출합니다. 예를 들어 C:\Azure-Samples로 추출합니다.

    Windows의 경로 길이 제한으로 인한 오류를 방지하려면 드라이브 루트 근처의 디렉터리에 보관 파일을 추출하는 것이 좋습니다.

  2. Visual Studio(AppModelv2-WebApp-OpenIDConnect-DotNet.sln)에서 솔루션을 엽니다.

  3. Visual Studio 버전에 따라 AppModelv2-WebApp-OpenIDConnect-DotNet> 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 NuGet 패키지 복원을 선택해야 할 수 있습니다.

  4. 보기를 선택하여>다른 Windows>패키지 관리자 콘솔을 엽니다. 그런 다음 Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r실행합니다.

메모

Enter_the_Supported_Account_Info_Here

자세한 정보

이 섹션에서는 사용자를 로그인하는 데 필요한 코드의 개요를 제공합니다. 이 개요는 코드의 작동 방식, 기본 인수 및 기존 ASP.NET 애플리케이션에 로그인을 추가하는 방법을 이해하는 데 유용할 수 있습니다.

샘플 작동 방식

샘플 앱의 웹 브라우저, 웹앱 및 Microsoft ID 플랫폼 간의 상호 작용 다이어그램입니다.

OWIN 미들웨어 NuGet 패키지

OWIN 미들웨어 패키지와 함께 ASP.NET OpenID Connect를 사용하여 쿠키 기반 인증으로 인증 파이프라인을 설정할 수 있습니다. 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 Portal에 등록된 애플리케이션의 애플리케이션 ID입니다.
Authority 사용자가 인증할 STS(보안 토큰 서비스) 엔드포인트입니다. 퍼블릭 클라우드의 경우 일반적으로 https://login.microsoftonline.com/{tenant}/v2.0입니다. 해당 URL에서 {tenant}은 사용자의 테넌트 이름, 테넌트 ID 또는 공통 엔드포인트에 대한 참조를 나타냅니다. (공통 엔드포인트는 다중 테넌트 애플리케이션에 사용됩니다.)
RedirectUri Microsoft ID 플랫폼에 대한 인증 후 사용자가 전송되는 URL입니다.
PostLogoutRedirectUri 사용자가 로그오프한 후 전송되는 URL입니다.
Scope 요청되는 범위 목록으로 공백으로 구분됩니다.
ResponseType 인증의 응답에 인증 코드 및 ID 토큰이 포함된 요청입니다.
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 자습서를 사용해 보세요.