Facebook 및 Twitter로 소셜 로그인 social-login-with-facebook-and-twitter
소셜 로그인은 사이트 방문자에게 Facebook 또는 Twitter 계정으로 로그인할 수 있는 옵션을 제공하는 기능입니다. 따라서 AEM 멤버 프로필에 허용된 Facebook 또는 Twitter 데이터를 포함합니다.
소셜 로그인 개요 social-login-overview
소셜 로그인을 포함하려면 사용자 지정 Facebook 및 Twitter 응용 프로그램을 만드는 것이 필수입니다.
we-retail 샘플에서는 샘플 Facebook 및 Twitter 앱과 클라우드 서비스를 제공하지만 프로덕션 웹 사이트에서는 사용할 수 없습니다.
필요한 단계는 다음과 같습니다.
-
모든 AEM 게시 인스턴스에서 OAuth 인증 활성화.
OAuth를 활성화하지 않은 경우 로그인 시도가 실패합니다.
-
소셜 앱 및 클라우드 서비스를 만들기.
-
Facebook 로그인을 지원하려면:
- Facebook 앱을 만듭니다.
- Facebook Connect 클라우드 서비스를 만들어 게시합니다.
-
Twitter 로그인을 지원하려면:
- Twitter 앱을 만듭니다.
- Twitter Connect 클라우드 서비스를 만들어 게시합니다.
-
-
커뮤니티 사이트에 대해 소셜 로그인 사용.
다음 두 가지 기본 개념이 있습니다.
-
범위(권한)은 앱에서 요청할 수 있는 데이터를 지정합니다.
- Facebook 및 Twitter Adobe Granite OAuth 애플리케이션 및 공급자 인스턴스에는 기본적으로 해당 범위 내에 기본 앱 권한이 포함됩니다.
-
필드(매개 변수)은 URL 매개 변수를 사용하여 요청된 실제 데이터를 지정합니다.
- 이 필드는 AEM Communities Facebook OAuth 공급자 및 AEM Communities Twitter OAuth 공급자에 지정됩니다.
- 기본 필드는 대부분의 사용 사례에 충분하지만 수정할 수 있습니다.
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 버전에서 작동하도록 업데이트되었습니다.
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>.을(를) 입력하십시오.
- 사이트 URL에 대해
-
응용 프로그램이 만들어지면 앱 ID 및 앱 암호 설정을 찾습니다. 이 정보는 Facebook 클라우드 서비스를 구성하는 데 필요합니다.
Facebook 연동 Cloud Service 만들기 create-a-facebook-connect-cloud-service
클라우드 서비스 구성을 만들어 인스턴스화된 Adobe Granite OAuth 응용 프로그램 및 공급자 인스턴스는 새 사용자가 추가되는 Facebook 응용 프로그램 및 구성원 그룹을 식별합니다.
-
AEM 작성자 인스턴스에서 관리자 권한으로 로그인합니다.
-
전역 탐색에서 도구 > 클라우드 서비스 > Facebook 소셜 로그인 구성을 선택합니다.
-
컨텍스트 경로 구성을 선택하십시오.
컨텍스트 경로은(는) 커뮤니티 사이트를 만들거나 편집하는 동안 선택한 클라우드 구성 경로와 같아야 합니다.
-
컨텍스트 경로 아래에서 클라우드 서비스를 만들 수 있도록 컨텍스트 경로가 활성화되어 있는지 확인하십시오.
-
도구 > 일반 > 구성 브라우저(으)로 이동합니다. 컨텍스트를 선택하고 속성을 편집합니다. 아직 활성화되지 않은 경우 클라우드 구성을 활성화합니다.
- 자세한 내용은 구성 브라우저 설명서를 참조하십시오.
-
Facebook 클라우드 서비스 구성을 만들기/편집합니다.
- 제목 (필수) Facebook 앱을 식별하는 표시 제목을 입력합니다. Facebook 앱의 표시 이름과 같은 이름을 입력하십시오.
- 앱 ID/API 키(필수) Facebook 앱의 앱 ID를 입력하십시오. 대화 상자에서 만든 Adobe Granite OAuth 응용 프로그램 및 공급자 인스턴스를 식별합니다.
- 앱 암호 (필수) Facebook 앱의 앱 암호를 입력하십시오.
- 사용자 만들기 확인 표시가 되어 있으면 Facebook 계정으로 로그인하면 AEM 사용자 항목이 만들어지고 선택한 사용자 그룹의 구성원으로 추가됩니다. 기본값이 선택되어 있습니다(적극 권장).
- 사용자 ID 마스크: 선택 해제된 상태로 둡니다.
- 범위 전자 메일: 사용자의 전자 메일 ID를 Facebook에서 가져와야 합니다.
- 사용자 그룹에 추가 사용자 그룹 추가를 선택하여 사용자를 추가할 커뮤니티 사이트에 대해 하나 이상의 구성원 그룹을 선택합니다.
note NOTE 그룹은 언제든지 추가하거나 제거할 수 있습니다. 하지만 기존 사용자의 멤버십은 영향을 받지 않습니다. 자동 멤버십은 이 필드를 업데이트한 후 생성 중인 새 사용자에게만 적용됩니다. 익명 사용자가 비활성화된 사이트의 경우 해당 폐쇄형 커뮤니티 사이트에 해당하는 커뮤니티 구성원 그룹에 사용자를 추가하도록 선택했습니다. - 저장을 선택합니다.
- 게시.
그 결과 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 게시 인스턴스에서 다음을 수행합니다.
-
관리자 권한으로 로그인합니다.
-
웹 콘솔로 이동합니다. 예: http://localhost:4503/system/console/configMgr.
-
AEM Communities Facebook OAuth 공급자를 찾습니다.
-
편집을 위해 열 연필 아이콘을 선택합니다.
-
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 응용 프로그램을 만들려면 최신 지침을 따르십시오.
일반적으로
-
웹 사이트 사용자에게 Twitter 응용 프로그램을 식별하는 이름을(를) 입력하십시오.
-
설명을 입력하십시오.
-
웹 사이트의 경우
https://<server>을(를) 입력하십시오. -
콜백 URL의 경우
https://server을(를) 입력하십시오.note NOTE 포트를 지정할 필요는 없습니다. 개발의 경우 https://127.0.0.1/이(가) 작동합니다. -
응용 프로그램이 만들어지면 소비자(API) 키 및 소비자(API) 암호를 찾습니다. 이 정보는 Twitter 클라우드 서비스를 구성하는 데 필요합니다.
권한 permissions
Twitter 애플리케이션 관리의 권한 섹션에서 다음을 수행합니다.
-
액세스:
Read only을(를) 선택합니다.- 다른 옵션은 지원되지 않습니다.
-
추가 권한: 선택적으로
Request email addresses from users을(를) 선택하십시오.- 선택하지 않으면 AEM의 사용자 프로필에 이메일 주소가 포함되지 않습니다.
- Twitter의 지침은 수행해야 할 추가 단계를 적시합니다.
소셜 로그인에 대해 수행된 유일한 REST 요청은 계정 가져오기/자격 증명 확인입니다.
Twitter 연동 Cloud Service 만들기 create-a-twitter-connect-cloud-service
클라우드 서비스 구성을 만들어 인스턴스화된 Adobe Granite OAuth 응용 프로그램 및 공급자 인스턴스는 새 사용자가 추가되는 Twitter 응용 프로그램 및 구성원 그룹을 식별합니다.
-
작성자 인스턴스에서 관리자 권한으로 로그인합니다.
-
전역 탐색에서 도구 > 클라우드 서비스 > Twitter 소셜 로그인 구성을 선택합니다.
-
컨텍스트 경로 구성을 선택하십시오.
컨텍스트 경로는 커뮤니티 사이트를 생성/편집하는 동안 선택한 클라우드 구성 경로와 동일해야 합니다.
-
컨텍스트 경로 아래에서 클라우드 서비스를 만들 수 있도록 컨텍스트 경로가 활성화되어 있는지 확인하십시오.
-
도구 > 일반 > 구성 브라우저(으)로 이동합니다. 컨텍스트를 선택하고 속성을 편집합니다. 아직 활성화되지 않은 경우 클라우드 구성을 활성화합니다.
- 자세한 내용은 구성 브라우저 설명서를 참조하십시오.
-
Twitter 클라우드 서비스 구성을 생성/편집합니다.
-
제목
(필수) Twitter 앱을 식별하는 표시 제목을 입력합니다. Twitter 앱의 표시 이름과(와) 같은 이름을 입력하십시오.
-
소비자 키
(필수) Twitter 앱의 소비자(API) 키를 입력합니다. 대화 상자에서 만든 Adobe Granite OAuth 응용 프로그램 및 공급자 인스턴스를 식별합니다.
-
소비자 암호
(필수) Twitter 앱의 소비자(API) 암호를 입력합니다.
-
사용자 만들기
선택하면 Twitter 계정으로 로그인하면 AEM 사용자 항목이 만들어지고 선택한 사용자 그룹에 해당 항목이 멤버로 추가됩니다. 기본값이 선택되어 있습니다(적극 권장).
-
사용자 ID 마스크
선택 해제된 상태로 둡니다.
-
사용자 그룹에 추가
사용자를 추가할 커뮤니티 사이트에 대해 하나 이상의 구성원 그룹을 선택하려면 사용자 그룹 추가를 선택하십시오.
note NOTE 그룹은 언제든지 추가하거나 제거할 수 있습니다. 하지만 기존 사용자의 멤버십은 영향을 받지 않습니다. 자동 멤버십은 이 필드를 업데이트한 후 생성 중인 새 사용자에게만 적용됩니다. 익명 사용자가 비활성화된 사이트의 경우 해당 닫힌 커뮤니티 사이트에 해당하는 커뮤니티 구성원 그룹에 사용자를 추가합니다. -
-
저장 및 게시를 선택합니다.
그 결과 추가 수정이 필요하지 않은 Adobe Granite OAuth Application and Provider 인스턴스가 생성됩니다. 기본 범위는 Twitter 로그인에 대한 표준 권한입니다.
AEM Communities Twitter OAuth 공급자 aem-communities-twitter-oauth-provider
AEM Communities 구성은 Adobe Granite OAuth 애플리케이션 및 공급자 인스턴스를 확장합니다. 이 공급자는 사용자 업데이트를 허용하기 위해 편집해야 합니다.
편집이 필요한 경우 각 AEM 게시 인스턴스에서 다음을 수행합니다.
-
관리자 권한으로 로그인합니다.
-
웹 콘솔로 이동합니다.
예: http://localhost:4503/system/console/configMgr.
-
AEM Communities Twitter OAuth 공급자를 찾습니다.
-
편집을 위해 열 연필 아이콘을 선택합니다.
- 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
클라우드 서비스가 구성되면 커뮤니티 사이트 생성 또는 관리 중에 사용자 관리 설정 하위 패널을 사용하여 커뮤니티 사이트에 대한 관련 소셜 로그인 설정을 활성화할 수 있습니다.
-
소셜 로그인 구성을 저장한 사이트 구성 컨텍스트를 선택합니다.
-
일반 탭에서 클라우드 구성을 설정합니다.
-
설정 탭에서 소셜 로그인을 사용하도록 설정하고 저장합니다.
소셜 로그인 테스트 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찾기.- 편집할 구성을 열려면 선택합니다.
- 저장을 선택합니다.
Adobe Granite OAuth 애플리케이션 및 공급자 adobe-granite-oauth-application-and-provider
Facebook 또는 Twitter용 클라우드 서비스를 만들면 Adobe Granite OAuth Authentication Handler의 인스턴스가 만들어집니다.
Facebook 또는 Twitter 앱에 대해 생성된 인스턴스를 찾으려면:
-
관리자 권한으로 로그인합니다.
-
웹 콘솔로 이동합니다.
예: http://localhost:4503/system/console/configMgr.
-
Adobe Granite OAuth 애플리케이션 및 공급자를 찾습니다.
-
클라이언트 ID이(가) 앱 ID와(과) 일치하는 인스턴스를 찾습니다.
다음 속성을 제외한 구성의 다른 속성은 그대로 둡니다.
-
구성 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 콜백에 대한 도메인은 공급자(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 색인을 추가하여 향상될 수 있습니다.
로그에 순회 경고가 표시되면 이 인덱스를 추가하는 것이 좋습니다.
관리자 권한으로 로그인한 작성자 인스턴스에서 다음을 수행합니다.
-
전역 탐색에서 도구, CRX/DE Lite를 선택합니다.
-
ntBaseLucene 사본에서 ntBaseLucene-oauth 라는 이름의 인덱스를 만듭니다.
/oak:index노드 아래ntBaseLucene노드 선택- 복사 선택
/oak:index선택- 붙여넣기 선택
- ntBaseLucene의 복사본 이름을
ntBaseLucene-oauth(으)로 바꾸기
-
ntBaseLucene-oauth 노드의 속성을 수정합니다.
- indexPath:
/oak:index/ntBaseLucene-oauth - 이름:
oauthid-123**** - 다시 인덱싱:
true - reindexCount:
1
- indexPath:
-
노드 /oak:index/ntBaseLucene-oauth/indexRules/nt:base/properties:
-
cqTags를 제외한 모든 하위 노드를 삭제합니다.
-
cqTags 이름을
oauthid-123****(으)로 바꾸기 -
oauthid-123****노드의 속성을 수정합니다.- 이름:
oauthid-123****
- 이름:
-
모두 저장을 선택합니다.
-
-
name
oauthid-123의 경우 123을(를) Adobe Granite OAuth 응용 프로그램 및 공급자 구성에서 클라이언트 ID의 값인 Facebook 앱 ID 또는 Twitter 소비자(API) 키(으)로 바꾸십시오.
추가 정보 및 도구는 Oak 쿼리 및 색인화를 참조하십시오.