facebook 및 Twitter을 사용한 소셜 로그인 social-login-with-facebook-and-twitter

소셜 로그인은 사이트 방문자에게 Facebook 또는 Twitter 계정으로 로그인할 수 있는 옵션을 제공하는 기능입니다. 따라서 AEM 멤버 프로필에 허용된 Facebook 또는 Twitter 데이터를 포함합니다.

socialloginweretail

소셜 로그인 개요 social-login-overview

소셜 로그인을 포함하려면 사용자 지정 Facebook 및 Twitter 응용 프로그램을 만드는 것이 필수 ​입니다.

we-retail 샘플에서는 샘플 Facebook 및 Twitter 앱과 클라우드 서비스를 제공하지만 프로덕션 웹 사이트에서는 사용할 수 없습니다.

필요한 단계는 다음과 같습니다.

  1. 모든 AEM 게시 인스턴스에서 OAuth 인증 활성화.

    OAuth를 활성화하지 않은 경우 로그인 시도가 실패합니다.

  2. 소셜 앱 및 클라우드 서비스를 만들기.

  3. 커뮤니티 사이트에 대해 소셜 로그인 사용.

다음 두 가지 기본 개념이 있습니다.

  1. 범위(권한)은 앱에서 요청할 수 있는 데이터를 지정합니다.

  2. 필드(매개 변수)은 URL 매개 변수를 사용하여 요청된 실제 데이터를 지정합니다.

Facebook 로그인 facebook-login

Facebook API 버전 facebook-api-version

소셜 로그인 및 we-retail Facebook 샘플은 Facebook Graph API 버전 1.0에서 개발되었습니다.
AEM 6.4 GA부터 AEM 6.3 SP1 소셜 로그인이 최신 Facebook Graph API 2.5 버전에서 작동하도록 업데이트되었습니다.

NOTE
이전 AEM 버전의 경우, 로그에 예외가 발생하면 ​에서 토큰을 추출할 수 없습니다. 해당 AEM 릴리스에 대한 최신 CFP로 업그레이드하십시오.

facebook Graph API 버전 정보는 Facebook API 변경 로그를 참조하십시오.

facebook 앱 만들기 create-a-facebook-app

facebook 소셜 로그인을 활성화하려면 올바르게 구성된 Facebook 애플리케이션이 필요합니다.

facebook 응용 프로그램을 만들려면 https://developers.facebook.com/apps/에서 Facebook의 지침을 따르십시오. 지침에 대한 변경 사항은 다음 정보에 반영되지 않습니다.

일반적으로 Facebook API v2.7부터:

  • 새 Facebook 앱 추가

    • 플랫폼 ​의 경우 웹 사이트 선택:

      • 사이트 URL ​에 대해 https://<server>:<port>.을(를) 입력하십시오.
      • 표시 이름 ​의 경우 Facebook 연결 서비스의 제목으로 사용할 제목을 입력하십시오.
      • Category ​의 경우 Apps for Pages ​을(를) 선택하는 것이 좋지만 어떤 것이든 선택할 수 있습니다.
      • 제품 추가: Facebook 로그인
      • 유효한 OAuth 리디렉션 URI ​에 대해 https://<server>:<port>.을(를) 입력하십시오.
NOTE
개발의 경우 http://localhost:4503 이 작동합니다.

응용 프로그램이 만들어지면 앱 ID앱 암호 설정을 찾습니다. 이 정보는 Facebook 클라우드 서비스를 구성하는 데 필요합니다.

facebook Connect Cloud Service 만들기 create-a-facebook-connect-cloud-service

클라우드 서비스 구성을 만들어 인스턴스화된 Adobe Granite OAuth 응용 프로그램 및 공급자 인스턴스는 새 사용자가 추가되는 Facebook 응용 프로그램 및 구성원 그룹을 식별합니다.

  1. AEM 작성자 인스턴스에서 관리자 권한으로 로그인합니다.

  2. 전역 탐색에서 도구 > Cloud Service > Facebook 소셜 로그인 구성 ​을 선택합니다.

  3. 컨텍스트 경로 구성을 선택하십시오.

    컨텍스트 경로 ​은(는) 커뮤니티 사이트를 만들거나 편집하는 동안 선택한 클라우드 구성 경로와 같아야 합니다.

  4. 컨텍스트 경로 아래에서 클라우드 서비스를 만들 수 있도록 컨텍스트 경로가 활성화되어 있는지 확인하십시오.

  5. 도구 > 일반 > 구성 브라우저(으)로 이동합니다. 컨텍스트를 선택하고 속성을 편집합니다. 아직 활성화되지 않은 경우 클라우드 구성을 활성화합니다.

    config-propertieping

  6. Facebook 클라우드 서비스 구성 만들기/편집.

    fbsocialloginconfigpng

    • 제목 (필수) Facebook 앱을 식별하는 표시 제목을 입력합니다. facebook 앱에 대해 표시 이름 ​과(와) 동일한 이름을 입력하십시오.
    • 앱 ID/API 키(필수) Facebook 앱의 앱 ID ​을(를) 입력하십시오. 대화 상자에서 만든 Adobe Granite OAuth 응용 프로그램 및 공급자 인스턴스를 식별합니다.
    • 앱 암호 (필수) Facebook 앱의 앱 암호 ​를 입력하십시오.
    • 사용자 만들기 확인 표시가 되어 있으면 Facebook 계정으로 로그인하면 AEM 사용자 항목이 만들어지고 선택한 사용자 그룹의 구성원으로 추가됩니다. 기본값이 선택되어 있습니다(적극 권장).
    • 사용자 ID 마스크: 선택 해제된 상태로 둡니다.
    • 범위 이메일: 사용자의 이메일 ID를 Facebook에서 가져와야 합니다.
    • 사용자 그룹에 추가 사용자 그룹 추가를 선택하여 사용자를 추가할 커뮤니티 사이트에 대해 하나 이상의 구성원 그룹을 선택합니다.
    note note
    NOTE
    그룹은 언제든지 추가하거나 제거할 수 있습니다. 하지만 기존 사용자의 멤버십은 영향을 받지 않습니다. 자동 멤버십은 이 필드를 업데이트한 후 생성 중인 새 사용자에게만 적용됩니다. 익명 사용자가 비활성화된 사이트의 경우 해당 폐쇄형 커뮤니티 사이트에 해당하는 커뮤니티 구성원 그룹에 사용자를 추가하도록 선택했습니다.
    • 저장 ​을 선택합니다.
    • Publish.

결과 Adobe Granite OAuth Application and Provider 인스턴스이며, 추가 범위(권한)를 추가하지 않으면 더 이상 수정할 필요가 없습니다. 기본 범위는 Facebook 로그인에 대한 표준 권한입니다. 추가 범위를 원하는 경우 OSGI 구성을 직접 편집해야 합니다. 시스템/콘솔을 통해 직접 수정한 내용이 있는 경우 덮어쓰지 않도록 Touch UI에서 클라우드 서비스 구성을 편집하지 마십시오.

AEM Communities Facebook OAuth 공급자 aem-communities-facebook-oauth-provider

AEM Communities 공급자가 Adobe Granite OAuth 응용 프로그램 및 공급자 인스턴스를 확장합니다.

이 공급자는 다음을 위해 편집해야 합니다.

  • 사용자 업데이트 허용

  • 범위 내에 추가 필드 추가

    • 기본적으로 허용되는 모든 필드가 기본적으로 포함되는 것은 아닙니다.

편집이 필요한 경우 각 AEM 게시 인스턴스에서 다음을 수행합니다.

  1. 관리자 권한으로 로그인합니다.

  2. 웹 콘솔로 이동합니다. 예: http://localhost:4503/system/console/configMgr.

  3. AEM Communities Facebook OAuth 공급자를 찾습니다.

  4. 편집을 위해 열 연필 아이콘을 선택합니다.

    fboauthprov_png

    • OAuth 공급자 ID

      (필수) 기본값은 soco -facebook ​입니다. 편집하지 마십시오.

    • Cloud Service 구성

      기본값은 /etc/ cloudservices / facebookconnect입니다. 편집하지 마십시오.

    • OAuth 공급자 서비스 구성

      기본값은 /apps/social/facebookprovider/config/입니다. 편집하지 마십시오.

    • 태그 사용

      편집하지 마십시오.

    • 사용자 경로

      사용자 데이터가 저장되는 저장소의 위치입니다. 커뮤니티 사이트의 경우 구성원이 서로의 프로필을 볼 수 있는 권한을 보장하려면 경로가 기본 /home/users/community ​여야 합니다.

    • 필드 사용

      선택하는 경우, 사용자 인증 및 정보를 위해 Facebook에 제출하는 요청에 나열된 필드가 지정됩니다. 기본값은 선택 해제되어 있습니다.

    • 필드

      필드가 활성화되면 Facebook Graph API를 호출할 때 다음 필드가 포함됩니다. 클라우드 서비스 구성에 정의된 범위 내에서 필드를 허용해야 합니다. 추가 필드는 Facebook의 승인이 필요할 수 있습니다. facebook 설명서의 Facebook 로그인 권한 섹션을 참조하십시오. 매개 변수로 추가된 기본 필드는 다음과 같습니다.

      • id
      • 이름
      • first_name
      • last_name
      • 링크
      • 로케일
      • 그림
      • 시간대
      • updated_time
      • 확인됨
      • 이메일

    필드가 추가되거나 변경되면 해당 기본 동기화 핸들러 구성을 업데이트하여 매핑을 수정합니다.

    • 사용자 업데이트

      선택하면 로그인할 때마다 저장소의 사용자 데이터를 새로 고쳐 프로필 변경 사항 또는 요청한 추가 데이터를 반영합니다. 기본값은 선택 해제되어 있습니다.

다음 단계 next-steps

다음 단계는 Facebook과 Twitter 모두에 대해 동일합니다.

Twitter 로그인 twitter-login

twitter 앱 만들기 create-a-twitter-app

twitter 소셜 로그인을 활성화하려면 구성된 Twitter 애플리케이션이 필요합니다.

https://apps.twitter.com에서 Twitter 응용 프로그램을 만들려면 최신 지침을 따르십시오.

일반적으로

  1. 웹 사이트 사용자에게 Twitter 응용 프로그램을 식별하는 이름 ​을(를) 입력하십시오.

  2. 설명 ​을 입력하십시오.

  3. 웹 사이트 ​의 경우 https://<server>을(를) 입력하십시오.

  4. 콜백 URL ​의 경우 https://server을(를) 입력하십시오.

    note note
    NOTE
    포트를 지정할 필요는 없습니다.
    개발의 경우 https://127.0.0.1/ 이 작동합니다.
  5. 응용 프로그램이 만들어지면 소비자(API) 키소비자(API) 암호 ​를 찾습니다. 이 정보는 Twitter 클라우드 서비스를 구성하는 데 필요합니다.

권한 permissions

twitter 애플리케이션 관리의 권한 섹션에서 다음을 수행합니다.

  • 액세스: Read only을(를) 선택합니다.

    • 다른 옵션은 지원되지 않습니다.
  • 추가 권한: 선택적으로 Request email addresses from users을(를) 선택하십시오.

    • 선택하지 않으면 AEM의 사용자 프로필에 이메일 주소가 포함되지 않습니다.
    • Twitter 지침은 수행해야 하는 추가 단계를 참고하십시오.

소셜 로그인에 대해 수행된 유일한 REST 요청은 GET 계정/자격 증명 확인 ​입니다.

twitter 연결 Cloud Service 만들기 create-a-twitter-connect-cloud-service

클라우드 서비스 구성을 만들어 인스턴스화된 Adobe Granite OAuth 응용 프로그램 및 공급자 인스턴스는 새 사용자가 추가되는 Twitter 응용 프로그램 및 구성원 그룹을 식별합니다.

  1. 작성자 인스턴스에서 관리자 권한으로 로그인합니다.

  2. 전역 탐색에서 도구 > Cloud Service > 소셜 로그인 구성 Twitter ​을 선택합니다.

  3. 컨텍스트 경로 구성을 선택하십시오.

    컨텍스트 경로는 커뮤니티 사이트를 생성/편집하는 동안 선택한 클라우드 구성 경로와 동일해야 합니다.

  4. 컨텍스트 경로 아래에서 클라우드 서비스를 만들 수 있도록 컨텍스트 경로가 활성화되어 있는지 확인하십시오.

  5. 도구 > 일반 > 구성 브라우저(으)로 이동합니다. 컨텍스트를 선택하고 속성을 편집합니다. 아직 활성화되지 않은 경우 클라우드 구성을 활성화합니다.

    twitterconfigpropng

  6. twitter 클라우드 서비스 구성을 생성/편집합니다.

    twittersocialloginpng

    • 제목

      (필수) Twitter 앱을 식별하는 표시 제목을 입력합니다. twitter 앱에 대해 표시 이름 ​과(와) 같은 이름을 입력하십시오.

    • 소비자 키

      (필수) Twitter 앱에 대한 소비자(API) 키 ​를 입력합니다. 대화 상자에서 만든 Adobe Granite OAuth 응용 프로그램 및 공급자 인스턴스를 식별합니다.

    • 소비자 암호

      (필수) Twitter 앱에 대한 소비자(API) 암호 ​를 입력합니다.

    • 사용자 만들기

      선택하면 Twitter 계정으로 로그인하면 AEM 사용자 항목이 만들어지고 선택한 사용자 그룹에 구성원으로 추가됩니다. 기본값이 선택되어 있습니다(적극 권장).

    • 사용자 ID 마스크

      선택 해제된 상태로 둡니다.

    • 사용자 그룹에 추가

      사용자를 추가할 커뮤니티 사이트에 대해 하나 이상의 구성원 그룹을 선택하려면 사용자 그룹 추가를 선택하십시오.

    note note
    NOTE
    그룹은 언제든지 추가하거나 제거할 수 있습니다. 하지만 기존 사용자의 멤버십은 영향을 받지 않습니다. 자동 멤버십은 이 필드를 업데이트한 후 생성 중인 새 사용자에게만 적용됩니다. 익명 사용자가 비활성화된 사이트의 경우 해당 닫힌 커뮤니티 사이트에 해당하는 커뮤니티 구성원 그룹에 사용자를 추가합니다.
  7. 저장Publish ​을(를) 선택하십시오.

그 결과 추가 수정이 필요하지 않은 Adobe Granite OAuth Application and Provider 인스턴스가 생성됩니다. 기본 범위는 Twitter 로그인에 대한 표준 권한입니다.

AEM Communities Twitter OAuth 공급자 aem-communities-twitter-oauth-provider

AEM Communities 구성은 Adobe Granite OAuth 애플리케이션 및 공급자 인스턴스를 확장합니다. 이 공급자는 사용자 업데이트를 허용하기 위해 편집해야 합니다.

편집이 필요한 경우 각 AEM 게시 인스턴스에서 다음을 수행합니다.

  1. 관리자 권한으로 로그인합니다.

  2. 웹 콘솔로 이동합니다.

    예: http://localhost:4503/system/console/configMgr.

  3. AEM Communities Twitter OAuth 공급자를 찾습니다.

  4. 편집을 위해 열 연필 아이콘을 선택합니다.

    twitterauth_png

    • OAuth 공급자 ID

    (필수) 기본값은 soco -twitter ​입니다. 편집하지 마십시오.

    • Cloud Service 구성

      기본값은 conf입니다. ​은(는) 편집하지 않습니다.

    • OAuth 공급자 서비스 구성

      기본값은 /apps/social/twitterprovider/config/입니다. 편집하지 마십시오.

    • 사용자 경로

      사용자 데이터가 저장되는 저장소의 위치입니다. 커뮤니티 사이트의 경우 구성원이 서로의 프로필을 볼 수 있는 권한을 보장하려면 경로가 기본 /home/users/community이어야 합니다.

    • 매개 변수 사용 - 편집하지 않음

    • URL 매개 변수 - 편집하지 않음

    • 사용자 업데이트

      선택하면 로그인할 때마다 저장소의 사용자 데이터를 새로 고쳐 프로필 변경 사항 또는 요청한 추가 데이터를 반영합니다. 기본값은 선택 해제되어 있습니다.

다음 단계 next-steps-1

다음 단계는 Facebook과 Twitter 모두에 대해 동일합니다.

소셜 로그인 활성화 enable-social-login

AEM Communities 사이트 콘솔 aem-communities-sites-console

클라우드 서비스가 구성되면 커뮤니티 사이트 생성 또는 관리 중에 사용자 관리 설정 하위 패널을 사용하여 커뮤니티 사이트에 대한 관련 소셜 로그인 설정을 활성화할 수 있습니다.

  1. 소셜 로그인 구성을 저장한 사이트 구성 컨텍스트를 선택합니다.

  2. 일반 탭에서 클라우드 구성을 설정합니다.

    managesites_png

  3. 설정 탭에서 소셜 로그인 ​을 사용하도록 설정하고 저장합니다.

    usermgmt_png

소셜 로그인 테스트 test-social-login

  • Adobe Granite OAuth 인증 처리기가 모든 게시 인스턴스에서 활성화되었는지 확인하십시오.
  • 클라우드 서비스가 게시되었는지 확인합니다.
  • 커뮤니티 사이트가 게시되었는지 확인합니다.
  • 브라우저에서 게시된 사이트를 실행합니다.
    예: http://localhost:4503/content/sites/engage/en.html
  • 로그인 ​을 선택합니다.
  • Facebook으로 로그인 또는 Twitter으로 로그인 ​을 선택합니다.
  • 아직 Facebook 또는 Twitter에 로그인하지 않은 경우 적절한 자격 증명으로 로그인합니다.
  • facebook 또는 Twitter 앱에서 표시하는 대화 상자에 따라 권한을 부여해야 할 수 있습니다.
  • 페이지 상단에 있는 도구 모음이 성공적인 로그인을 반영하도록 업데이트됩니다.
  • 프로필 선택: 프로필 페이지에 사용자의 아바타 이미지, 이름 및 성이 표시됩니다. 또한 허용된 필드/매개 변수에 따라 Facebook 또는 Twitter 프로필의 정보도 표시됩니다.

AEM Platform OAuth 구성 aem-platform-oauth-configurations

Adobe Granite OAuth 인증 핸들러 adobe-granite-oauth-authentication-handler

Adobe Granite OAuth Authentication Handler은(는) 기본적으로 활성화되어 있지 않으며 모든 AEM 게시 인스턴스에서 을(를) 활성화해야 합니다.

게시에서 인증 핸들러를 활성화하려면 OSGi 구성을 열고 저장하면 됩니다.

  • 관리자 권한으로 로그인합니다.
  • 웹 콘솔로 이동합니다.
    예: http://localhost:4503/system/console/configMgr
  • Adobe Granite OAuth Authentication Handler 찾기.
  • 편집할 구성을 열려면 선택합니다.
  • 저장 ​을 선택합니다.

graniteoauth

CAUTION
인증 처리기를 Adobe Granite OAuth 응용 프로그램 및 공급자 ​의 Facebook 또는 Twitter 인스턴스와 혼동하지 않도록 주의하십시오.

graniteoauth1

Adobe Granite OAuth 애플리케이션 및 공급자 adobe-granite-oauth-application-and-provider

facebook 또는 Twitter에 대한 클라우드 서비스를 만들면 Adobe Granite OAuth Authentication Handler의 인스턴스가 만들어집니다.

facebook 또는 Twitter 앱에 대해 생성된 인스턴스를 찾으려면 다음을 수행하십시오.

  1. 관리자 권한으로 로그인합니다.

  2. 웹 콘솔로 이동합니다.

    예: http://localhost:4503/system/console/configMgr.

  3. Adobe Granite OAuth 애플리케이션 및 공급자를 찾습니다.

    • 클라이언트 ID ​이(가) 앱 ID ​와(과) 일치하는 인스턴스를 찾습니다.

      graniteoauth2

      다음 속성을 제외한 구성의 다른 속성은 그대로 둡니다.

    • 구성 ID

      (필수) OAuth 구성 ID는 고유해야 합니다. 클라우드 서비스가 생성될 때 자동으로 생성됩니다.

    • 클라이언트 ID

      (필수) 클라우드 서비스를 만들 때 제공된 응용 프로그램 ID입니다.

    • 클라이언트 암호

      (필수) 클라우드 서비스를 만들 때 제공된 응용 프로그램 암호입니다.

    • 범위

      (선택 사항) 공급자가 허용된 내용에 대한 추가 범위를 요청할 수 있습니다. 기본 범위는 소셜 인증 및 프로필 데이터를 제공하는 데 필요한 권한을 포함합니다.

    • 공급자 ID

      (필수) AEM Communities의 공급자 ID는 클라우드 서비스를 만들 때 설정됩니다. 편집하지 마십시오. facebook Connect의 경우 값은 soco -facebook ​입니다. twitter 연결의 경우 값은 soco -twitter ​입니다.

    • 그룹

      (권장) 만들어진 사용자를 추가할 구성원 그룹이 하나 이상 있습니다. AEM Communities의 경우 커뮤니티 사이트에 대한 구성원 그룹을 나열하는 것이 좋습니다.

    • 콜백 URL

      (선택 사항) 클라이언트를 다시 리디렉션하기 위해 OAuth 공급자로 구성된 URL입니다. 원래 요청의 호스트를 사용하려면 상대 URL을 사용하십시오. 원래 요청한 URL을 대신 사용하려면 비워 둡니다. 접미사 "/callback/j_security_check"가 이 URL에 자동으로 추가됩니다.

    note note
    NOTE
    콜백에 대한 도메인은 공급자(Facebook 또는 Twitter)에 등록해야 합니다.

각 OAuth 인증 핸들러 구성에 대해 인스턴스에 두 개의 추가 구성이 만들어집니다.

  • Apache Jackrabbit Oak 기본 동기화 핸들러(org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler) - 편집이 필요하지 않지만 Facebook 필드가 CQ 사용자 프로필 노드에 매핑되는 방식을 사용자 필드 매핑으로 확인할 수 있습니다. 또한 '동기화 처리기 이름'은 OAuth 공급자 구성의 구성 ID와 일치합니다.
  • Apache Jackrabbit Oak 외부 로그인 모듈(org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalLoginModuleFactory) - 편집이 필요하지 않지만, 'ID 공급자 이름'과 '동기화 핸들러 이름'이 동일하고 각각 해당 OAuth 및 동기화 핸들러 구성을 가리킬 수 있습니다.

자세한 내용은 Apache Oak 외부 로그인 모듈을 사용한 인증을 참조하십시오.

OAuth 사용자 순회 성능 oauth-user-traversal-performance

수십만 명의 사용자가 Facebook 또는 Twitter 로그인을 사용하여 등록하는 커뮤니티 사이트의 경우, 사이트 방문자가 소셜 로그인을 사용할 때 수행되는 쿼리의 순회 성능은 다음 Oak 색인을 추가하여 향상될 수 있습니다.

로그에 순회 경고가 표시되면 이 인덱스를 추가하는 것이 좋습니다.

관리자 권한으로 로그인한 작성자 인스턴스에서 다음을 수행합니다.

  1. 전역 탐색에서 도구, CRX/DE Lite를 선택합니다.

  2. ntBaseLucene 사본에서 ntBaseLucene-oauth 라는 이름의 인덱스를 만듭니다.

    • /oak:index 노드 아래
    • ntBaseLucene 노드 선택
    • 복사 선택
    • /oak:index 선택
    • 붙여넣기 선택
    • ntBaseLucene의 복사본 이름을 ntBaseLucene-oauth(으)로 바꾸기
  3. ntBaseLucene-oauth 노드의 속성을 수정합니다.

    • indexPath: /oak:index/ntBaseLucene-oauth
    • 이름: oauthid-123&#x200B;**&#x200B;**
    • 다시 인덱싱: true
    • reindexCount: 1
  4. /oak:index/ntBaseLucene-oauth/indexRules/nt:base/properties 노드:

    • cqTags를 제외한 모든 하위 노드를 삭제합니다.

    • cqTags 이름을 oauthid-123**&#x200B;**(으)로 바꾸기

    • oauthid-123**&#x200B;** 노드의 속성을 수정합니다.

      • 이름: oauthid-123&#x200B;**&#x200B;**
    • 모두 저장 ​을 선택합니다.

추가 정보 및 도구는 Oak 쿼리 및 색인화를 참조하십시오.

Dispatcher 구성 dispatcher-configuration

커뮤니티에 대한 Dispatcher 구성을 참조하십시오.

recommendation-more-help
81e2cd9d-0789-409d-b87c-2a8ce4f28791