Wordpress와 케이크 사이의 SSO(Single Sign On)PHP
저는 워드프레스 사이트를 가지고 있습니다.계획은 케이크를 사용하여 사이트를 재구축하는 것이다.PHP 프레임워크.Wordpress 사이트의 개별 섹션을 시간 제한으로 인해 한 번에 하나씩 교체하고 싶습니다.이는 두 앱이 일정 시간 동안 나란히 실행된다는 것을 의미합니다.케이크에 대한 접근을 통제해야 해Wordpress에서 제공하는 인증을 사용하는 PHP 앱입니다.이걸 어떻게 하는 게 최선인지 모르겠어요.비슷한 질문들을 많이 보았지만, 아직 명확한 해결책을 찾지 못했습니다.
다음 두 가지 접근법에 대해 생각하고 있습니다.
플랜 A:
- Wordpress의 인증 쿠키를 검색하도록 Cake를 구성합니다.
- Wordpress의 데이터베이스를 보도록 Cake를 구성합니다.
- Wordpress의 인증 로직 중 일부를 빌려 Cake's Auth 컴포넌트에 WP 사용자 인증 방법을 가르쳐 주세요.
플랜 B:
- 내 워드프레스 사이트에서 인증 API를 설정합니다.
- 케이크에 별도의 인증 구성 요소를 설정합니다.
- 사용자가 케이크 앱에서 보호된 페이지를 누르면 WP 엔드포인트에 ping을 실행하고 수동으로 로그인합니다.(이로 인해 두 번째 auth cookie 세트가 생성됩니다.)
이 두 가지 방법 중 하나가 올바른 접근 방식인 것 같습니까?더 좋은 방법이 있을까요?
참고 자료:Cake 세션 핸들링에 관한 기사, Cake Auth 컴포넌트 문서, Cake Auth 튜토리얼, WP 인증 개요, 워드프레스 인증에 대한 보다 자세한 검토
업데이트 우리는 이 문제를 해결하기 시작했고, 성공할 것 같지만, 비밀번호 해싱과 관련된 매우 까다로운 측면이 있어 그 자체의 질문을 정당화합니다.이 스레드를 따르고 있다면 살펴보는 것이 좋습니다.
나도 한때 비슷한 상황이 있었어크로스 프레임워크 인증 zend + 몇 개월 전 코드 시그니터...
어쨌든, 저는 이렇게 하고 싶습니다.
- 내 워드프레스 사이트에서 인증 API를 설정합니다.
- 케이크에 별도의 인증 구성 요소를 설정합니다.
- 사용자가 케이크 앱에서 보호된 페이지를 누르면 WP 엔드포인트에 ping을 실행하고 수동으로 로그인합니다.(이로 인해 두 번째 auth cookie 세트가 생성됩니다.)
여기서, 저는 실행 가능한 약간의 변화를 제안합니다.
SSO 토큰 시스템이 있는지 확인합니다.와 같이 사용자가 Wordpress에 로그인하면 토큰이 있는 다른 쿠키를 설정합니다.토큰은 사용자 이름 + 비밀번호(해시) + 개인 키이며 Wordpress와 CakePHP 사이에서는 동일합니다.어느 사이트에서든 쿠키를 검색하여 사용자를 수동으로 로그인하거나 데이터베이스 검색을 수행합니다.해싱은 쿠키에 중요해요!그러나 사이트에서 다른 도메인을 사용하는 경우 다음과 같은 전략을 다시 수립해야 할 수 있습니다.
한 번은 다른 도메인을 가지고 있었어요.로그인 페이지 또는 승인되지 않은 페이지에서 다른 웹 사이트에 ping을 수행하여 로그인 상자를 표시합니다.다른 웹 사이트에서는 사용자가 로그인하고 있는 경우 포스트 로그인 페이지가 표시되고 요청 URI가 토큰을 전송한 경우 정상 동작을 수행하여 인증된 토큰을 이(현재) 도메인에 반환합니다.
간단히 말하면:
사이트 A = WordPress & 사이트 B = 케이크PHP
사이트 B는 허가가 필요한 페이지를 히트하여 사이트 A에 로그인(Login-with-Facebook sort 실행 시 발생하는 것과 같이)을 ping합니다.이 경우 사이트 A의 SSO 검증 테이블의 일부가 되는 토큰(비밀키)과 REQUEST_URI를 통해 요구됩니다.이 테이블은 사용자가 이미 로그인하고 있는 경우 사이트 A는 (POST 경유로) 반환됩니다.사이트 B의 (비밀키)를 경유하여 암호화하고 사용자를 로그인합니다.B와 A의 개인키는 동일합니다.
이게 이해가 됐길 바라.
질문이 있나요?:)
질문에 대한 답변은 다음과 같습니다.
이상적으로는 SSO를 사용하는 이유우리는 많은 제약 때문에 그것을 사용한다.예를 들어 다음과 같습니다.데이터베이스에는...1000개 이상의 테이블이 있는 100만 행, 이미 거대한 앱 위에 모듈을 추가해야 합니다.대신 다른 데이터베이스를 사용합니다.SSO는 사용자 정보를 반환하며, 이 정보는 추가로 복제할 수 있습니다.예를 들어 'Facebook 로그인'을 클릭하면 이메일 주소나 사용자 이름, 프로필 사진 등 요청된 정보가 반환됩니다.데이터베이스에 추가될 수 있습니다...다른 데이터베이스를 유지할 것을 강력히 권장합니다.
두 번째 및 세 번째 질문:두 사이트 모두 데이터베이스에서 동일한 사용자 테이블을 참조해야 합니까?동일한 데이터를 사용하지 않는 한 다른 데이터베이스를 사용하는 것이 좋습니다.또는 소프트웨어 플랫폼을 변경한다고 할 수 있습니다.
각 앱에 대해 사이트별 사용자 행을 별도의 사용자 테이블에 복사해야 합니까?네, 자동으로 발생합니다.일단 메인 사이트에 등록하면 아무 일도 일어나지 않습니다.이미 로그인하고 나서 사이트 B에 접속하면 아무 일도 일어나지 않습니다.로그인하면 사용자 정보를 항상 요구할 수 있습니다.이렇게 하면 새로운 사이트에는 액티브 유저가 있습니다!2 bird?
무엇이 어떻게 작동하는지 복잡하게 만들지 말고 어떻게 단기간에 달성할 수 있는지 집중하라.SSO - Login - Restricted 페이지 - logins를 찾습니다.로그인 - 이미 로그인한 경우 사용자 정보 가져오기 - 사용자 정보가 있는 경우 보조 사이트를 통해 로그인하거나 새 사용자 정보를 설정합니다. 완료!
델의 개발자는 플로우 차트를 매우 좋아합니다!안 그래?방금 작성했습니다.
기타 답변:
"사용자 정보 가져오기" 단계는 로그인한 사이트에서 사용자 정보를 가져와 다른 사이트에 새 사용자(행)를 자동으로 생성하는 것을 의미합니까?
이상적으로는 사용자의 정보 사용을 '허용'하기 전에 사용자에게 권한을 요청하는 것이 좋지만 개인 정보 보호 정책의 방식은 다릅니다.
즉, 한 사이트는 모든 등록/사용자 생성을 처리하고 다른 사이트는 해당 사용자가 나타나 자동 생성을 트리거할 때까지 기다립니다.아니면 사용자가 한 사이트에 등록하는 순간 두 데이터베이스 모두 사용자 행을 삽입합니까?
한 사이트는 모든 등록/사용자 등록을 처리하고 다른 사이트는 해당 사용자가 나타나 자동 생성을 트리거할 때까지 기다립니다.둘 다 가질 수 있어요.웹 사이트에 등록하고 트리거 기반 자동 생성도 수행합니다.전략에 따라 다르죠아니면 사용자가 한 사이트에 등록하는 순간 두 데이터베이스 모두 사용자 행을 삽입합니까?그건 끔찍한 연습이 될 거야!그것은 SSO의 동기를 죽일 것이다.SSO의 모티브는, 유저가 사용할 수 있는 인증 패밀리를 만들어, 유저가 때때로 다른 사이트에 등록할 필요가 없게 하는 것입니다.한 번에 하나의 데이터베이스만 업데이트하고 필요에 따라 다른 데이터베이스만 업데이트합니다.
질문이 있나요?:)
나 이거 한 번 해봤어.저는 단편이나 어떤 언급도 가지고 있지 않습니다.도움이 될 것 같아서요
WP 및 케이크 구성PHP는 동일한 세션을 사용하기 위해 세션 ID와 세션 이름으로 실행할 수 있습니다.
사용자가 웹사이트에 등록할 때 WP와 CakePHP를 모두 사용하여 등록하고,
프런트 엔드에서 로그인 뷰를 처리할 프레임워크를 1개 선택합니다.나는 케이크를 선택했었다.PHP는 로그인에 성공하면 다른 프레임워크의 DB에서 동일한 사용자를 찾아 인증 시스템을 사용하여 사용자를 인증합니다.
도움이 되길 바랍니다!!!
제안 사항:
- 사이트에 접속하기 위해 로그인해야 하는 폐쇄형 시스템을 구축하고 있다면 CAS를 사용할 수 있습니다.대학이 주로 사용하는 것은 알지만 폐쇄형 시스템에서는 사용할 수 있습니다.
(익명의 사용자를 처리해야 하는 경우 아래 제안이 도움이 될 수 있습니다.)
- 간단하게 하고, 계획의 파트 A와 같이, 간단하게 유저가 로그인하고 있는지를 나타내는 쿠키(케이크와 워드프레스 양쪽에서 표시)를 준비합니다.쿠키는 케이크와 WP에서 모두 작성/체크해야 합니다.케이크는 WP의 DB를 볼 필요가 없습니다.쿠키에는 각 시스템의 사용자가 어떻게 매핑되어 있는지에 대한 정보가 포함될 수 있습니다.
- 중앙 로그인 화면이 표시됩니다.이것은 CAS 의 경우와 비슷합니다.하지만 당신만의 것을 만들어 주세요.CAS는 익명 사용자를 처리하지 않습니다.저는 현재 업무용 중앙 로그인 화면을 만들고 있습니다.간단해요.중앙 로그인 화면에서 모든 인증을 처리하여 WP와 케이크가 모두 볼 수 있는 쿠키를 만듭니다.이는 WP와 케이크의 로그인 링크가 사용자를 공통 페이지로 리다이렉트한다는 것을 의미합니다.사용자가 정상적으로 인증되면 원래 서비스로 리다이렉트되도록 링크는 콜백 URL을 제공해야 합니다.사용자 인증을 위해 중앙 DB를 결정해야 합니다.
쿠키 접근법에는 다음과 같은 보너스가 있습니다.
- 이 제품은 경량 솔루션으로 온/오프 스위치로 포장할 수 있습니다.WP에서는 cookie 로직을 wp_options 값으로 랩하기만 하면 됩니다.
- WP와 케이크의 인증시스템을 이용하실 수 있습니다.API 및/또는 세션에서 작업할 필요가 없습니다.서로의 DB를 보고 애플리케이션을 결합할 필요가 없습니다.
- 역할과 권한을 네이티브로 유지할 수 있습니다.즉, WP는 자체 역할 및 권한 시스템과 함께 작동하며 케이크 애플리케이션은 해당 시스템과 함께 작동합니다.
- 새로운 "서비스"를 플랫폼에 추가하는 것은 "쿠키 만들기/체크하기"와 같이 간단하며, 시스템 기본 제공 인증 시스템을 사용하여 사용자를 로그인합니다.
- Single Sign On은 쿠키를 만드는 것만큼이나 간단합니다.싱글 사인 오프는 쿠키를 삭제하는 것입니다.
관심 있으시다면 각 제안에 대해 더 자세히 설명해 드리겠습니다.
언급URL : https://stackoverflow.com/questions/15188261/single-sign-on-sso-between-wordpress-and-cakephp
'programing' 카테고리의 다른 글
RoboPOJ 사용방법Android Studio에서 Json에서 모델 클래스를 자동으로 생성하는 OGenerator (0) | 2023.02.14 |
---|---|
react-module-module: 디버깅 출력의 일부가 표시되지 않음 (0) | 2023.02.14 |
뉴턴소프트.Json.Linq.문자열 배열 C#에 JArray 연결 (0) | 2023.02.14 |
C++에서 json 파일을 읽는 중 (0) | 2023.02.10 |
WP Rest API 업로드 이미지 (0) | 2023.02.10 |