다음을 통해 공유


ASP.NET Core Identity 외부 공급자 인증

작성자: Valeriy NovytskyyRick Anderson

이 문서에서는 사용자가 외부 인증 공급자의 자격 증명으로 OAuth 2.0을 사용하여 로그인할 수 있도록 하는 ASP.NET Core 앱을 빌드하는 방법을 설명합니다.

Facebook, Twitter, GoogleMicrosoft 공급자는 다음 섹션에서 다루고 이 문서에서 만든 시작 프로젝트를 사용합니다. 다른 공급자는 OpenIddict, AspNet.Security.OAuth.Providers 및 AspNet.Security.OpenId.Providers같은 타사 패키지에서 사용할 수 있습니다.

사용자가 기존 자격 증명으로 로그인할 수 있도록 하는 것은 사용자에게 편리하며 로그인 프로세스를 관리하는 많은 복잡성을 타사로 전환합니다.

새 ASP.NET Core 프로젝트 만들기

  • ASP.NET Core 웹앱 템플릿을 선택합니다. 확인을 선택합니다.
  • 인증 유형 입력에서 개별 계정을선택합니다.

마이그레이션 적용

  • 앱을 실행하고 레지스터 링크를 선택합니다.
  • 새 계정의 메일과 암호를 입력한 다음 등록을 선택합니다.
  • 지침에 따라 마이그레이션을 적용합니다.

프록시 또는 부하 분산 장치를 사용하여 요청 정보 전달

앱이 프록시 서버 또는 부하 분산 장치 뒤에 배포되는 경우 원래 요청 정보의 일부가 요청 헤더로 앱에 전달될 수 있습니다. 이 정보에는 일반적으로 보안 요청 체계(https), 호스트 및 클라이언트 IP 주소가 포함됩니다. 앱은 원래 요청 정보를 검색 및 사용하기 위해 이 요청 헤더를 자동으로 읽지 않습니다.

이 체계는 외부 공급자의 인증 흐름에 영향을 주는 링크 생성에 사용됩니다. 보안 체계(https)가 손실되면 앱이 잘못되고 안전하지 않은 리디렉션 URL을 생성합니다.

전달된 헤더 미들웨어를 사용하여 요청 처리를 위한 원본 요청 정보를 앱에 제공합니다.

자세한 내용은 프록시 서버 및 부하 분산 장치를 사용하도록 ASP.NET Core 구성을 참조하세요.

비밀 관리자를 사용하여 로그인 공급자가 할당한 토큰 저장

소셜 로그인 공급자는 등록 프로세스 중에 애플리케이션 ID애플리케이션 암호 토큰을 할당합니다. 정확한 토큰 이름은 공급자에 따라 달라집니다. 이러한 토큰은 앱이 공급자의 API에 액세스하는 데 사용하는 자격 증명을 나타냅니다. 토큰은 Secret Manager의 도움을 받아 앱 구성에 연결할 수 있는 사용자 비밀을 구성합니다. 사용자 비밀은 appsettings.json 같은 구성 파일에 토큰을 저장하는 보다 안전한 대안입니다.

중요함

Secret Manager는 로컬 개발 및 테스트용입니다. Azure Key Vault 구성 공급자를 사용하여 스테이징 및 프로덕션 비밀을 보호합니다. 이 공급자는 Secret Manager를 로컬로 사용하지 않으려는 경우 로컬 개발 및 테스트에도 사용할 수 있습니다.

각 로그인 공급자가 할당한 토큰을 저장하는 방법에 대한 지침은 ASP.NET Core에서 개발 중인 앱 비밀의 안전한 스토리지를 참조하세요.

로그인 공급자 구성

다음 문서를 사용하여 로그인 공급자 및 앱을 구성합니다.

여러 인증 공급자

앱에 여러 공급자가 필요한 경우 공급자 확장 메서드를 다음에서 연결합니다.AddAuthentication

builder.Services.AddAuthentication()
    .AddGoogle(options =>
    {
        // Google configuration options
    })
    .AddFacebook(options =>
    {
        // Facebook configuration options
    })
    .AddMicrosoftAccount(options =>
    {
        // Microsoft Account configuration options
    })
    .AddTwitter(options =>
    {
        // Twitter configuration options
    });

각 공급자에 대한 자세한 구성 지침은 해당 문서를 참조하세요.

필요에 따라 암호 설정

외부 로그인 공급자를 등록하는 경우 앱에 암호를 등록하지 않은 상태입니다. 이렇게 하면 사이트의 암호를 만들고 기억할 수 없지만 사이트 액세스를 위해 외부 로그인 공급자에 완전히 종속됩니다. 외부 로그인 공급자를 사용할 수 없는 경우 앱에 로그인할 수 없습니다.

외부 공급자와 로그인 프로세스 중에 설정한 전자 메일을 사용하여 암호를 만들고 로그인하려면 다음을 수행합니다.

  • 오른쪽 위 모서리에서 Hello <전자 메일 별칭> 링크를 선택하여 관리 보기로 이동합니다.

웹 애플리케이션 관리 뷰

  • 만들기를 선택합니다.

암호 페이지 설정

  • 유효한 암호를 설정하면 이 자격 증명을 사용하여 전자 메일 주소로 로그인할 수 있습니다.

추가 정보