빠른 시작: ASP.NET Core 웹앱 Microsoft로 로그인 추가

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

빠른 시작: ASP.NET Core 웹앱 Microsoft로 로그인 추가

이 문제를 해결하는 동안 불편을 끼쳐 드려 죄송하며 양해해 주셔서 감사합니다.

이 빠른 시작에서는 ASP.NET Core 웹앱이 모든 Microsoft Entra 조직에서 사용자를 로그인하는 방법을 보여주는 코드 샘플을 다운로드하고 실행합니다.

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

이 빠른 시작의 코드 샘플이 작동하려면 다음을 수행합니다.

  • 리디렉션 URI에 대해 https://localhost:44321/https://localhost:44321/signin-oidc을(를) 입력합니다.
  • 프런트 채널 로그아웃 URL에 대해 https://localhost:44321/signout-oidc를 입력합니다.

권한 부여 엔드포인트에서 요청 ID 토큰을 발급합니다.

Already configured 이러한 특성을 사용하여 애플리케이션을 구성합니다.

2단계: ASP.NET Core 프로젝트 다운로드

프로젝트를 실행합니다.

Windows의 경로 길이 제한으로 인해 발생하는 오류를 방지하려면 보관 파일의 압축을 풀거나 리포지토리를 드라이브 루트에 가까운 디렉터리에 복제하는 것이 좋습니다.

3단계: 앱이 구성되고 실행할 준비가 되었습니다.

앱의 속성 값을 사용하여 프로젝트를 구성했으며 실행할 준비가 되었습니다.

참고 항목

Enter_the_Supported_Account_Info_Here

자세한 정보

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

샘플 작동 방법

Diagram of the interaction between the web browser, the web app, and the Microsoft identity platform in the sample app.

시작 클래스

Microsoft.AspNetCore.Authentication 미들웨어는 호스팅 프로세스가 시작될 때 실행되는 Startup 클래스를 사용합니다.

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));

    services.AddControllersWithViews(options =>
    {
        var policy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .Build();
        options.Filters.Add(new AuthorizeFilter(policy));
    });
   services.AddRazorPages()
        .AddMicrosoftIdentityUI();
}

AddAuthentication() 메서드는 쿠키 기반 인증을 추가하도록 서비스를 구성합니다. 이 인증은 브라우저 시나리오에서 OpenID Connect에 대한 질문을 설정하는 데 사용됩니다.

.AddMicrosoftIdentityWebApp이 포함된 줄은 Microsoft ID 플랫폼 인증을 애플리케이션에 추가합니다. 그런 다음, 애플리케이션이 appsettings.json 구성 파일의 AzureAD 섹션에 있는 정보를 기반으로 하여 사용자를 로그인하도록 구성됩니다.

appsettings.json 설명
ClientId Azure Portal에 등록된 애플리케이션의 애플리케이션(클라이언트) ID입니다.
Instance 사용자가 인증하는 STS(보안 토큰 서비스) 엔드포인트입니다. 이 값은 일반적으로 https://login.microsoftonline.com/이며, Azure 퍼블릭 클라우드를 나타냅니다.
TenantId 회사 계정, 학교 계정 또는 Microsoft 개인 계정을 사용하여 사용자를 로그인하는 테넌트의 이름 또는 테넌트 ID(GUID) 또는 common입니다.

Configure() 메서드에는 명명된 기능을 사용할 수 있도록 설정하는 두 가지 중요한 메서드인 app.UseAuthentication()app.UseAuthorization()이 포함되어 있습니다. 또한 Configure() 메서드에서 endpoints.MapControllerRoute() 또는 endpoints.MapControllers()에 대한 호출을 하나 이상 사용하여 Microsoft ID 웹의 경로를 등록해야 합니다.

app.UseAuthentication();
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});

컨트롤러 또는 메서드를 보호하기 위한 특성

컨트롤러 또는 컨트롤러 메서드는 [Authorize] 특성을 사용하여 보호할 수 있습니다. 이 특성은 인증된 사용자만 허용하여 컨트롤러 또는 메서드에 대한 액세스를 제한합니다. 사용자가 인증되지 않은 경우 컨트롤러에 액세스하기 위해 인증 질문을 시작할 수 있습니다.

도움말 및 지원 

도움이 필요하거나, 문제를 보고하거나, 지원 옵션에 대해 알아보려면 개발자를 위한 도움말 및 지원을 참조하세요.

다음 단계

이 ASP.NET Core 자습서를 포함하는 GitHub 리포지토리에는 다음 방법을 보여주는 지침과 추가 코드 샘플이 포함되어 있습니다.

  • 새 ASP.NET Core 웹 애플리케이션에 인증 추가
  • Microsoft Graph, 기타 Microsoft API 또는 사용자 고유의 웹 API 호출
  • 권한 부여 추가
  • 국가별 클라우드 또는 소셜 ID를 사용하여 사용자 로그인