Twitter 인증 구성Configuring Twitter authentication

<a name=security-authentication-twitter-logins>

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

이 자습서에서는 사용자 수 있도록 하는 방법을 보여 줍니다 Twitter 계정으로 इ न क 에서 만든 샘플 ASP.NET 코어 2.0 프로젝트를 사용 하 여 이전 페이지합니다.This tutorial shows you how to enable your users to sign in with their Twitter account using a sample ASP.NET Core 2.0 project created on the previous page.

Twitter에서 앱을 만들Create the app in Twitter

  • 로 이동 https://apps.twitter.com/ 에 로그인 합니다.Navigate to https://apps.twitter.com/ and sign in. Twitter 계정 없는 경우 사용 하 여는 지금 등록 링크를 만듭니다.If you don't already have a Twitter account, use the Sign up now link to create one. 에 로그인 한 후의 응용 프로그램 관리 페이지가 표시 됩니다.After signing in, the Application Management page is shown:

Microsoft Edge에서 열려 있는 twitter 응용 프로그램 관리

  • Create New App 응용 프로그램을 확인 하 고 이름, 설명 및 공용 웹 사이트 (이 사용 가능 임시 할 때까지 URI 등록 된 도메인 이름):Tap Create New App and fill out the application Name, Description and public Website URI (this can be temporary until you register the domain name):

응용 프로그램 페이지 만들기

  • 개발 URI를 입력으로 /signin-twitter 에 추가 유효한 OAuth 리디렉션 Uri 필드 (예: https://localhost:44320/signin-twitter).Enter your development URI with /signin-twitter appended into the Valid OAuth Redirect URIs field (for example: https://localhost:44320/signin-twitter). 이 자습서의 뒷부분에 나오는 구성 된 Twitter 인증 구성표에는 요청을 자동으로 처리할 /signin-twitter OAuth 흐름을 구현 하는 경로입니다.The Twitter authentication scheme configured later in this tutorial will automatically handle requests at /signin-twitter route to implement the OAuth flow.

  • 폼의 나머지 부분을 입력 하 고 탭 Twitter 응용 프로그램을 만드는합니다.Fill out the rest of the form and tap Create your Twitter application. 새 응용 프로그램 세부 정보가 표시 됩니다.New application details are displayed:

응용 프로그램 페이지에서 세부 정보 탭

  • 다시 방문 해야 사이트를 배포 하는 경우는 응용 프로그램 관리 페이지 하 고 새 공용 URI를 등록 합니다.When deploying the site you'll need to revisit the Application Management page and register a new public URI.

Twitter ConsumerKey 및 ConsumerSecret 저장Storing Twitter ConsumerKey and ConsumerSecret

Twitter와 같은 중요 한 설정이 연결 Consumer KeyConsumer Secret 사용 하 여 응용 프로그램 구성에는 암호 관리자합니다.Link sensitive settings like Twitter Consumer Key and Consumer Secret to your application configuration using the Secret Manager. 이 자습서에서는 이름을 토큰 Authentication:Twitter:ConsumerKeyAuthentication:Twitter:ConsumerSecret합니다.For the purposes of this tutorial, name the tokens Authentication:Twitter:ConsumerKey and Authentication:Twitter:ConsumerSecret.

이러한 토큰을 확인할 수 있습니다는 키와 액세스 토큰이 새 Twitter 응용 프로그램을 만든 후 탭:These tokens can be found on the Keys and Access Tokens tab after creating your new Twitter application:

키 및 액세스 토큰 탭

Twitter 인증 구성Configure Twitter Authentication

이 자습서에 사용 된 프로젝트 템플릿을 사용 하면 Microsoft.AspNetCore.Authentication.Twitter 패키지가 이미 설치 되었습니다.The project template used in this tutorial ensures that Microsoft.AspNetCore.Authentication.Twitter package is already installed.

  • Visual Studio 2017으로이 패키지를 설치 하려면 마우스 오른쪽 단추로 클릭 프로젝트와 선택 NuGet 패키지 관리합니다.To install this package with Visual Studio 2017, right-click on the project and select Manage NuGet Packages.
  • .NET Core CLI를 설치 하려면 다음 프로젝트 디렉터리에 실행 합니다.To install with .NET Core CLI, execute the following in your project directory:

    dotnet add package Microsoft.AspNetCore.Authentication.Twitter

Twitter 서비스에 추가 ConfigureServices 메서드에서 Startup.cs 파일:Add the Twitter service in the ConfigureServices method in Startup.cs file:

services.AddIdentity<ApplicationUser, IdentityRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders();

services.AddAuthentication().AddTwitter(twitterOptions =>
{
    twitterOptions.ConsumerKey = Configuration["Authentication:Twitter:ConsumerKey"];
    twitterOptions.ConsumerSecret = Configuration["Authentication:Twitter:ConsumerSecret"];
});

참고: 에 대 한 호출 AddIdentity 기본 체계 설정을 구성 합니다.Note: The call to AddIdentity configures the default scheme settings. AddAuthentication(string defaultScheme) 집합 오버 로드는 DefaultScheme 속성 그 뿐만 아니라 AddAuthentication(Action<AuthenticationOptions> configureOptions) 만 명시적으로 설정 하는 속성을 설정 하는 오버 로드 합니다.The AddAuthentication(string defaultScheme) overload sets the DefaultScheme property; and, the AddAuthentication(Action<AuthenticationOptions> configureOptions) overload sets only the properties you explicitly set. 이러한 오버 로드 중 하나 에서만 호출 해야 한 번 추가 하는 경우 여러 인증 공급자.Either of these overloads should only be called once when adding multiple authentication providers. 에 대 한 후속 호출 이전에 구성 된 모든 재정의의 가능성이 있는 AuthenticationOptions 속성입니다.Subsequent calls to it have the potential of overriding any previously configured AuthenticationOptions properties.

참조는 TwitterOptions Twitter 인증에서 지 원하는 구성 옵션에 대 한 자세한 내용은 API 참조 합니다.See the TwitterOptions API reference for more information on configuration options supported by Twitter authentication. 이 사용 하 여 사용자에 대 한 다른 정보를 요청할 수 수 있습니다.This can be used to request different information about the user.

Twitter를 사용 하 여 로그인Sign in with Twitter

응용 프로그램을 실행 하 고 클릭 로그인합니다.Run your application and click Log in. Twitter를 사용 하 여 로그인 하는 옵션이 표시 됩니다.An option to sign in with Twitter appears:

웹 응용 프로그램: 인증 되지 않은 사용자

클릭 하면 Twitter 인증에 대 한 Twitter에 리디렉션합니다.Clicking on Twitter redirects to Twitter for authentication:

Twitter 인증 페이지

Twitter 자격 증명을 입력 한 후 사용자의 전자 메일을 설정할 수 있는 웹 사이트로 다시 리디렉션됩니다.After entering your Twitter credentials, you are redirected back to the web site where you can set your email.

이제 Twitter 자격 증명을 사용 하 여 로그인:You are now logged in using your Twitter credentials:

웹 응용 프로그램: 인증 된 사용자

문제 해결Troubleshooting

  • ASP.NET Core 2.x만: 경우 Identity를 호출 하 여 구성 되지 않은 services.AddIdentityConfigureServices, 인증을 시도 하면 ArgumentException: 'SignInScheme' 옵션을 제공 해야합니다.ASP.NET Core 2.x only: If Identity is not configured by calling services.AddIdentity in ConfigureServices, attempting to authenticate will result in ArgumentException: The 'SignInScheme' option must be provided. 이 자습서에 사용 된 프로젝트 템플릿을 확인이 수행 되도록 합니다.The project template used in this tutorial ensures that this is done.
  • 사이트 데이터베이스 초기 마이그레이션을 적용 하 여 생성 되지 않은 경우 발생 합니다 요청을 처리 하는 동안 데이터베이스 작업이 실패 했습니다 오류입니다.If the site database has not been created by applying the initial migration, you will get A database operation failed while processing the request error. 적용 마이그레이션 는 데이터베이스를 만들고 오류 지 나 새로 고침 합니다.Tap Apply Migrations to create the database and refresh to continue past the error.

다음 단계Next steps

  • 이 문서 Twitter와 인증 방법에 대해 살펴보았습니다.This article showed how you can authenticate with Twitter. 이와 비슷한 방식에 제시 된 다른 공급자를 사용 하 여 인증을 따를 수 있습니다는 이전 페이지합니다.You can follow a similar approach to authenticate with other providers listed on the previous page.

  • 다시 설정 해야 Azure 웹 앱에 웹 사이트를 게시 한 후의 ConsumerSecret Twitter 개발자 포털에 있습니다.Once you publish your web site to Azure web app, you should reset the ConsumerSecret in the Twitter developer portal.

  • 설정의 Authentication:Twitter:ConsumerKeyAuthentication:Twitter:ConsumerSecret Azure 포털에서 응용 프로그램 설정으로 합니다.Set the Authentication:Twitter:ConsumerKey and Authentication:Twitter:ConsumerSecret as application settings in the Azure portal. 구성 시스템 환경 변수에서 키를 읽을 수 설정 됩니다.The configuration system is set up to read keys from environment variables.