외부 '디렉토리 서비스'와 SSO / 인증 통합


15

클라이언트의 프로토 타입 작업을 시작하려고합니다. 필요한 기능 중 하나는 사내 사용자 인증 / 등록 시스템과의 통합입니다.

이 시스템은 권한있는 사용자 데이터베이스 역할을하며 새 사용자를 작성하고 유효한 사용자를 인증하기위한 RESTful 인터페이스를 제공합니다.

  1. WP에서 새 사용자를 만들 수 있어야하며 해당 프로세스의 일부로 해당 사용자를 작성 / 확인하기 위해 외부 인증 API를 호출하십시오.

  2. 유효한 사용자이지만 WP에 알려지지 않은 사람은 WP 사이트에 직접 등록 할 필요없이 로그인하여 댓글을 달 수 있어야합니다.

  3. 전체 웹 사이트에 로그인 한 사람도 자동으로 WordPress에 로그인해야합니다.

나는 다음과 같은 길을 가고 있다고 생각합니다.

  • (1)의 경우-사용할 수있는 등록 고리가 있습니까?

  • (2)의 경우-인증 필터를 연결한다고 가정합니다. 즉, 누군가 로그인을 시도하면이를 트랩하고 외부 시스템을 호출 한 다음 WP 로그인을 처리하거나 등록 프로세스로 리디렉션합니다. 1) 필요하다.

  • (3)의 경우-기본 사이트에서 설정 한 로그인 쿠키를 읽고 (2)?

또한 users 및 usermeta 테이블에 레코드를 삽입해야한다고 생각합니다.

위의 내용은 의미가 있습니다. 누구든지 이것을 도울 수있는 좋은 자료를 얻었습니다 (@hakre-나는 당신이 이것에 대해 약간의 작업을 한 것을 보았습니다 !!).

최신 정보

그래서 나는 여전히 이것에 대해 머리를 강타하고 있습니다. 본질적으로 인증 필터에 연결하려고 노력하고 있습니다.

  1. '마스터'사이트에 대한 로그인 쿠키가 설정되어 있는지 확인하고, 설정된 경우 해당 인증 API에 대해 재확인하고, 유효한 경우 wp_signon()마스터 사이트 쿠키에 포함 된 정보 (이메일 및 해시 비밀번호)를 사용하여 WP 로그인을 강제 실행 하십시오. WP의 자격 증명으로
  2. 쿠키가 설정되지 않은 경우 마스터 사이트 로그인 페이지로 리디렉션하고 로그인 / 가입을 한 다음 1 단계로 돌아갑니다.
  3. 인증 된 마스터 사이트 사용자가있을 때 WP 사용자가없는 경우이를 작성하고 '투명한'사인온을 작성하십시오 (즉, 사용자에게 WP 로그인 양식이 표시되지 않음)

기본적으로, 나는 주로 댓글을 달려는 사용자를 위해 WP 로그인 양식을 완전히 숨기고 나중에 저자와 관리자가 직접 액세스 할 수있는 방법을 찾고 싶습니다.

상당히 느리게 진행됩니다. 여기에 도움을 줄 수있는 것이 있습니다 :

  • 인증 필터가 올바른 필터입니까? 예상되는 모든 상황에서 호출되는 것 같지 않습니다. 예를 들어 메타 위젯은 인증 후크 발생없이 로그인 / 로그 아웃 링크를 표시합니다.

  • 객체 wp_signon()를 반환 할 수 WP_User있지만 (성공을 나타냄) 로그인 한 상태에는 영향을 미치지 않습니다. 즉, 새로 고친 후에도 메타 위젯이 여전히 "로그인"으로 표시됩니다.

어떤 도움도 감사하게 받았습니다 :)


아마도 이것은 별도의 질문이어야합니까?
anu

아, 그리고 이것이 언급 될 수 있는지 모르겠지만, 반나절 정도의 도움을 위해 기꺼이 돈을 지불 할 것입니다-내 프로필의 연락처 세부 사항.
anu

답변:


12

OK, 나를 위해 일하는 접근법은 다음과 같습니다.

  1. 기본 사이트 사용자 데이터베이스가 신뢰할 수 있다고 가정하십시오. 기본 사이트 로그인 쿠키에는 사이트 비밀번호의 ID와 해시가 포함되어 있습니다.

  2. 기본 사이트에서 쿠키를 가져 와서 기본 사이트의 인증 API에 대해 다시 확인하십시오.

  3. 유효하면 리턴 값의 이메일 주소 'user_login'를 WP 값으로 , 해시 된 사이트 비밀번호를 WP 비밀번호로 사용하십시오.

  4. 을 사용하여이 사용자가 WP에 있는지 테스트하십시오 wp_authenticate('user_login', 'user_pass'). WP_User성공하면 WP_Error객체 또는 실패 하면 객체를 반환합니다 .

  5. 경우 WP_Error/is_wp_error(), 다음 사용을 사용하는 wp_update_user()사용자를 생성 (또는 변경 암호를 사용하여 사용자를 업데이트).

  6. 로그인을 통해 wp_set_current_user(), wp_set_auth_cookie()그리고do_action('wp_login, id)

(이것은 모두 'init'액션에 첨부 된 함수에 포함되어 있습니다)

이것은 작동하는 것 같습니다-WP에 알려지지 않은 유효한 사이트 사용자가 자동으로 생성됩니다. 암호 변경이 가능하며 사이트 쿠키가 설정되어 있고 WP 사용자가 존재하면 SSO는 자동적이고 매우 원활합니다.


1
+1 멋진 설명 / 답변. 언젠가 조금 더 자세한 내용을 보여줄 시간을 찾으시기 바랍니다. 다른 사람들이 대부분의 시행 착오를 피하는 데 도움이 될 것입니다.)
kaiser

1
이것은 정확히 내가 찾고있는 것입니다. 프로세스를 조금 더 설명 할 수 있습니까? 특히 1, 2, 3 단계는 나에게 분명하지 않습니다. 감사!!
chifliiiii


1

여러 사용자 관련 기능이 조건부로 정의 !function_exists()되어 wp-includes/pluggable.php있으며 자체 버전으로 쉽게 재정의 할 수 있습니다.


1

WordPress에서 싱글 사인온 (SSO)을 활성화하면 18 시간이 걸리지 만 몇 분 밖에 걸리지 않을 수 있습니다.

기본적으로 https://wordpress.org/plugins/wp-force-login/ 및 수정 된 https://as.wordpress.org/plugins/jwt-authenticator/ 버전 을 사용하고 인증을 작성하려고합니다. JWT (JSON 웹 토큰)를 생성하고 WordPress 사이트의 특수 URL로 다시 리디렉션하는 기본 사이트의 엔드 포인트 보호.

보다 전체 코드는 여기를 하십시오 .


답변 주셔서 감사합니다. 링크는 사라질 수 있고 답변을 쓸모 없게 만들므로 링크 만 답변하지 않는 것이 좋습니다. 여기에 관련 비트를 포함시키는 것이 좋습니다.
kaiser
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.