ASP.NET Core에서 Facebook, Google 및 외부 공급자 인증Facebook, Google, and external provider authentication in ASP.NET Core

작성자: Valeriy NovytskyyRick AndersonBy Valeriy Novytskyy and Rick Anderson

이 자습서에서는 사용자가 외부 인증 공급 기업의 자격 증명으로 OAuth 2.0을 사용하여 로그인할 수 있도록 ASP.NET Core 2.2 앱을 빌드하는 방법을 보여줍니다.This tutorial demonstrates how to build an ASP.NET Core 2.2 app that enables users to sign in using OAuth 2.0 with credentials from external authentication providers.

Facebook, Twitter, GoogleMicrosoft 공급자는 다음 섹션에서 다룹니다.Facebook, Twitter, Google, and Microsoft providers are covered in the following sections. 다른 공급자는 AspNet.Security.OAuth.ProvidersAspNet.Security.OpenId.Providers와 같은 타사 패키지에서 사용할 수 있습니다.Other providers are available in third-party packages such as AspNet.Security.OAuth.Providers and AspNet.Security.OpenId.Providers.

Facebook, Twitter, Google Plus 및 Windows용 소셜 미디어 아이콘

사용자가 기존 자격 증명으로 로그인할 수 있도록 설정:Enabling users to sign in with their existing credentials:

  • 사용자에게 편리합니다.Is convenient for the users.
  • 로그인 프로세스를 관리하는 많은 복잡한 과정을 타사로 이전합니다.Shifts many of the complexities of managing the sign-in process onto a third party.

소셜 로그인이 트래픽 및 고객 변환을 제공할 수 있는 방법에 대한 예제는 FacebookTwitter의 사례 연구를 참조하세요.For examples of how social logins can drive traffic and customer conversions, see case studies by Facebook and Twitter.

새 ASP.NET Core 프로젝트 만들기Create a New ASP.NET Core Project

  • 새 프로젝트를 만듭니다.Create a new project.
  • ASP.NET Core 웹 애플리케이션다음을 선택합니다.Select ASP.NET Core Web Application and Next.
  • 프로젝트 이름을 제공하고 위치를 확인하거나 변경합니다.Provide a Project name and confirm or change the Location. 만들기를 선택합니다.Select Create.
  • 드롭다운에서 ASP.NET Core 2.2를 선택합니다.Select ASP.NET Core 2.2 in the drop down. 템플릿 목록에서 웹 애플리케이션을 선택합니다.Select Web Application in the template list.
  • 인증에서 변경을 선택하고 인증을 개별 사용자 계정으로 설정합니다.Under Authentication, select Change and set the authentication to Individual User Accounts. 확인을 선택합니다.Select OK.
  • 새 ASP.NET Core 웹 애플리케이션 만들기 창에서 만들기를 선택합니다.In the Create a new ASP.NET Core Web Application window, select Create.

마이그레이션 적용Apply migrations

  • 앱을 실행하고 레지스터 링크를 선택합니다.Run the app and select the Register link.
  • 새 계정의 메일과 암호를 입력한 다음 등록을 선택합니다.Enter the email and password for the new account, and then select Register.
  • 지침에 따라 마이그레이션을 적용합니다.Follow the instructions to apply migrations.

프록시 또는 부하 분산 장치를 사용하여 요청 정보 전달Forward request information with a proxy or load balancer

앱이 프록시 서버 또는 부하 분산 장치 뒤에 배포되는 경우 원래 요청 정보의 일부가 요청 헤더로 앱에 전달될 수 있습니다.If the app is deployed behind a proxy server or load balancer, some of the original request information might be forwarded to the app in request headers. 이 정보에는 일반적으로 보안 요청 체계(https), 호스트 및 클라이언트 IP 주소가 포함됩니다.This information usually includes the secure request scheme (https), host, and client IP address. 앱은 원래 요청 정보를 검색 및 사용하기 위해 이 요청 헤더를 자동으로 읽지 않습니다.Apps don't automatically read these request headers to discover and use the original request information.

이 체계는 외부 공급자의 인증 흐름에 영향을 주는 링크 생성에 사용됩니다.The scheme is used in link generation that affects the authentication flow with external providers. 보안 체계(https)가 손실되면 앱이 잘못되고 안전하지 않은 리디렉션 URL을 생성합니다.Losing the secure scheme (https) results in the app generating incorrect insecure redirect URLs.

전달된 헤더 미들웨어를 사용하여 요청 처리를 위한 원본 요청 정보를 앱에 제공합니다.Use Forwarded Headers Middleware to make the original request information available to the app for request processing.

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

SecretManager를 사용하여 로그인 공급자에 의해 할당된 토큰 저장Use SecretManager to store tokens assigned by login providers

소셜 로그인 공급자는 등록 프로세스 중에 애플리케이션 ID애플리케이션 암호 토큰을 할당합니다.Social login providers assign Application Id and Application Secret tokens during the registration process. 정확한 토큰 이름은 공급자에 따라 달라집니다.The exact token names vary by provider. 이러한 토큰은 앱이 API에 액세스하는 데 사용하는 자격 증명을 나타냅니다.These tokens represent the credentials your app uses to access their API. 토큰은 Secret Manager의 도움으로 앱 구성에 연결할 수 있는 "암호"를 구성합니다.The tokens constitute the "secrets" that can be linked to your app configuration with the help of Secret Manager. Secret Manager는 appsettings.json과 같은 구성 파일에 토큰을 저장하는 보다 안전한 대안입니다.Secret Manager is a more secure alternative to storing the tokens in a configuration file, such as appsettings.json.

중요

Secret Manager는 개발 목적으로만 사용됩니다.Secret Manager is for development purposes only. Azure Key Vault 구성 제공자로 Azure 테스트 및 프로덕션 암호를 저장하고 보호할 수 있습니다.You can store and protect Azure test and production secrets with the Azure Key Vault configuration provider.

ASP.NET Core에서 개발 중인 앱 암호의 안전한 스토리지 항목의 단계에 따라 아래의 각 로그인 공급자에 의해 할당된 토큰을 저장합니다.Follow the steps in Safe storage of app secrets in development in ASP.NET Core topic to store tokens assigned by each login provider below.

애플리케이션에 필요한 로그인 공급자 설정Setup login providers required by your application

다음 항목을 사용하여 해당 공급자를 사용하도록 애플리케이션을 구성합니다.Use the following topics to configure your application to use the respective providers:

여러 인증 공급자Multiple authentication providers

앱에 여러 공급자가 필요한 경우 AddAuthentication 뒤에 공급자 확장 메서드를 연결합니다.When the app requires multiple providers, chain the provider extension methods behind AddAuthentication:

services.AddAuthentication()
    .AddMicrosoftAccount(microsoftOptions => { ... })
    .AddGoogle(googleOptions => { ... })
    .AddTwitter(twitterOptions => { ... })
    .AddFacebook(facebookOptions => { ... });

필요에 따라 암호 설정Optionally set password

외부 로그인 공급자를 등록하는 경우 앱에 암호를 등록하지 않은 상태입니다.When you register with an external login provider, you don't have a password registered with the app. 그러면 사이트에 암호를 만들고 기억하지 않아도 되지만 외부 로그인 공급자에 따라 다르게 적용해야 합니다.This alleviates you from creating and remembering a password for the site, but it also makes you dependent on the external login provider. 외부 로그인 공급자를 사용할 수 없는 경우 웹 사이트에 로그인할 수 없습니다.If the external login provider is unavailable, you won't be able to sign in to the web site.

외부 공급자로 로그인하는 프로세스 중에 설정한 전자 메일을 사용하여 암호를 만들고 로그인하려면:To create a password and sign in using your email that you set during the sign in process with external providers:

  • 오른쪽 위 모서리에 있는 Hello <이메일 별칭> 링크를 선택하여 관리 보기로 이동합니다.Select the Hello <email alias> link at the top-right corner to navigate to the Manage view.

웹 애플리케이션 관리 뷰

  • 만들기를 선택합니다.Select Create

암호 페이지 설정

  • 올바른 암호를 설정하고 사용자의 전자 메일을 사용하여 로그인하는 데 사용할 수 있습니다.Set a valid password and you can use this to sign in with your email.

다음 단계Next steps

  • 이 문서는 외부 인증을 고새하고 ASP.NET Core 앱에 외부 로그인을 추가하는 데 필요한 필수 구성 요소를 설명합니다.This article introduced external authentication and explained the prerequisites required to add external logins to your ASP.NET Core app.

  • 앱에 필요한 공급자에 대한 로그인을 구성하기 위해 공급자 관련 페이지를 참조합니다.Reference provider-specific pages to configure logins for the providers required by your app.

  • 사용자와 해당 액세스 및 새로 고침 토큰에 대한 추가 데이터를 유지할 수 있습니다.You may want to persist additional data about the user and their access and refresh tokens. 자세한 내용은 추가 클레임 및 ASP.NET Core에서 외부 공급자의에서 토큰을 유지 합니다.을 참조하세요.For more information, see 추가 클레임 및 ASP.NET Core에서 외부 공급자의에서 토큰을 유지 합니다..