Facebook, Google 및 기타 외부 공급자를 통해 인증 사용Enabling authentication using Facebook, Google, and other external providers

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

이 자습서에는 사용자가 외부 인증 공급자의 자격 증명으로 OAuth 2.0을 사용하여 로그인할 수 있도록 ASP.NET Core 2.x 앱을 빌드하는 방법을 보여줍니다.This tutorial demonstrates how to build an ASP.NET Core 2.x app that enables users to log 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 and 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.

참고: 여기에 제공된 패키지는 OAuth 인증 흐름의 복잡성을 상당히 추상화하지만 문제를 해결하는 경우 자세히 이해해야 할 수도 있습니다.Note: Packages presented here abstract a great deal of complexity of the OAuth authentication flow, but understanding the details may become necessary when troubleshooting. 많은 리소스를 사용할 수 있습니다. 예를 들어 OAuth 2 소개 또는 OAuth 2 이해를 참조하세요.Many resources are available; for example, see Introduction to OAuth 2 or Understanding OAuth 2. 공급자 패키지의 ASP.NET Core 소스 코드를 확인하여 몇 가지 문제를 해결할 수 있습니다.Some issues can be resolved by looking at the ASP.NET Core source code for the provider packages.

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

  • Visual Studio 2017의 시작 페이지에서 또는 파일 > 새로 만들기 > 프로젝트를 통해 새 프로젝트를 만듭니다.In Visual Studio 2017, create a new project from the Start Page, or via File > New > Project.

  • Visual C# >.NET Core 범주에서 사용할 수 있는 ASP.NET Core 웹 응용 프로그램 템플릿을 선택합니다.Select the ASP.NET Core Web Application template available in Visual C# > .NET Core category:

새 프로젝트 대화 상자

  • 웹 응용 프로그램을 누르고 인증개별 사용자 계정으로 설정되었는지 확인합니다.Tap Web Application and verify Authentication is set to Individual User Accounts:

새 웹 응용 프로그램 대화 상자

참고: 이 자습서에서는 마법사의 위쪽에서 선택할 수 있는 ASP.NET Core 2.0 SDK 버전에 적용됩니다.Note: This tutorial applies to ASP.NET Core 2.0 SDK version which can be selected at the top of the wizard.

마이그레이션 적용Apply migrations

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

SSL 필요Require SSL

OAuth 2.0은 HTTPS 프로토콜을 통한 인증을 위해 SSL을 사용해야 합니다.OAuth 2.0 requires the use of SSL for authentication over the HTTPS protocol.

참고: 위에 표시된 대로 프로젝트 마법사의 인증 변경 대화에서 개별 사용자 계정 옵션을 선택한 경우 ASP.NET Core 2.x에 대한 웹 응용 프로그램 또는 Web API 프로젝트 템플릿를 사용하여 만든 프로젝트는 자동으로 SSL을 사용하고 https URL으로 시작하도록 구성됩니다.Note: Projects created using Web Application or Web API project templates for ASP.NET Core 2.x are automatically configured to enable SSL and launch with https URL if the Individual User Accounts option was selected on Change Authentication dialog in the project wizard as shown above.

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 (exact naming varies by provider).

이러한 값은 해당 API에 액세스하기 위해 응용 프로그램이 사용하는 사용자 이름암호를 효과적으로 지정하고 직접 구성 파일에 저장하거나 하드 코딩하는 대신 암호 관리자를 사용하여 응용 프로그램 구성에 연결될 수 있는 "비밀"을 구성합니다.These values are effectively the user name and password your application uses to access their API, and constitute the "secrets" that can be linked to your application configuration with the help of Secret Manager instead of storing them in configuration files directly or hard-coding them.

ASP.NET Core에서 개발 중에 앱 암호의 안전한 저장소 항목의 단계에 따라 아래의 각 로그인 공급자에 의해 할당된 토큰을 저장할 수 있습니다.Follow the steps in Safe storage of app secrets during development in ASP.NET Core topic so that you can 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:

필요에 따라 암호 설정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 log 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 링크를 눌러 관리 뷰로 이동합니다.Tap the Hello link at the top right corner to navigate to the Manage view.

웹 응용 프로그램 관리 뷰

  • 만들기Tap 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.