누군가 Townnews 사이트에 SSO를 설정해 보셨나요?
Townnews 또는 BLOX CMS를 Discourse SSO와 함께 사용하는 사이트에 대해 아는 바가 없습니다. 해당 서비스를 사용하는 사이트에 코드를 추가할 수 있는지 아시나요? Discourse SSO 코드를 사이트에 추가할 수 있다면, 이를 Discourse의 SSO 제공자로 사용할 수 있을 것입니다.
죄송합니다. 저는 초보자인데, 제가 말한 것은 townnews를 SSO 소스로 사용하는 것이었습니다. 사이트에 추가해야 할 코드는 무엇인가요?
이것은 townnews가 Discourse 사이트의 SSO 제공자가 된다는 것을 의미합니다. Discourse의 SSO 구현을 사용하려면 SSO 제공자로 기능하는 서비스에 코드를 추가할 수 있어야 합니다. 해당 코드는 서비스의 로그인 프로세스에 연결되어야 합니다. 추가해야 할 코드에 대한 세부 사항은 여기서 찾을 수 있습니다: Official Single-Sign-On for Discourse (sso).
동작하는 코드 예시를 보려면, WordPress 플러그인이 SSO를 구현하는 방식을 확인해 보세요: wp-discourse/lib/sso-provider at main · discourse/wp-discourse · GitHub.
Townnews를 통해 OAuth2로 Discourse에 로그인하는 것도 가능할 수 있습니다. Townnews가 OAuth2 제공자로 기능할 수 있다면 가능합니다. Discourse에서 OAuth2 로그인을 설정하는 방법에 대한 세부 사항은 여기서 확인할 수 있습니다: OAuth2 Basic Support. 이 부분에 너무 많은 시간을 쓰기 전에, Townnews가 OAuth2 제공자로 기능할 수 있는지 확인하는 것이 좋습니다. 그들의 문서에서 이를 알아볼 수 있을 것입니다.
사이트 제공업체와 문제를 해결하기 위해 노력하고 있지만, 혹시 도움이 될 만한 정보가 있는지 확인해 보고자 이렇게 공유합니다. 시간을 내어 주셔서 감사합니다.
제공업체 엔드포인트로 리다이렉트
모든 BLOX-CMS 사이트에는 다음 예약된 URL에서 사용 가능한 연동 인증(federated authentication) 엔드포인트가 있습니다:
https://www.example.com/tncms/auth/federated/
소비자 사이트는 사용자의 브라우저를 이 URL로 리다이렉트하여 인증을 시작합니다. 이 엔드포인트에는 return 매개변수가 필수이며, 이 값에는 소비자 사이트의 엔드포인트 URL을 설정해야 합니다.
URL 예시:
https://www.example.com/tncms/auth/federated/?return=http://vendor.com/login/
이 엔드포인트는 추가 매개변수도 허용합니다:
-
source : 사용자가 인증을 해야 하는 경우 이 매개변수와 그 값은 사이트의 로그인 URL로 전달됩니다. 템플릿은 이 값에 반응하여 로그인 폼의 인터페이스를 사용자 정의할 수 있습니다. 지정되지 않으면 기본값으로 'federated’가 사용됩니다.
-
reauth : 사용자가 현재 로그인 상태와 관계없이 로그인 페이지가 표시되도록 하려면 truthy 값으로 설정합니다.
소비자 엔드포인트로 리다이렉트
소비자 사이트의 엔드포인트 URL은 사용자가 처음 제공업체의 엔드포인트로 리다이렉트될 때 return 매개변수를 통해 제공업체에 전달됩니다. 제공업체 사이트 인증이 성공한 후, 사용자는 code 매개변수와 함께 이 URL로 리다이렉트됩니다. code 값은 아래에 설명된 대로 즉시 후속 웹 서비스 호출에서 사용자의 계정 정보와 교환되어야 합니다.
소비자의 엔드포인트 URL에는 자체 쿼리 매개변수가 포함될 수 있습니다. code 매개변수는 다른 값을 덮어쓰지 않고 기존 쿼리 매개변수에 병합됩니다.
제공업체 사이트의 템플릿 작성 방식에 따라, code 값 없이 소비자 엔드포인트에 도달하는 사용자가 있을 수 있습니다. 이 경우 사용자는 인증 과정을 취소한 것으로 간주해야 합니다.
로그인 성공 시 응답 예시 (이전 예시 기반):
http://vendor.com/login/?code={code}
여기서 *{code}*는 후속 웹 서비스에 사용되는 고유 식별자입니다.
후속 웹 서비스 호출
사용자가 유효한 code와 함께 소비자의 엔드포인트에 도달하면, 소비자 사이트는 즉시 제공업체 사이트로 웹 서비스 호출을 발행하여 해당 코드를 사용자의 계정 정보와 교환해야 합니다.
소비자 사이트는 제공업체로부터 받은 code 매개변수를 전달하여 사용자 모듈의 get 작업을 액세스합니다:
https://www.example.com/tncms/webservice/v1/user/get/?code={code}
응답은 웹 서비스 문서에 설명된 사용자의 계정 데이터 객체입니다. code가 유효하지 않으면 null 응답이 반환됩니다.
code는 한 번만 사용할 수 있습니다. 사용자 계정을 검색하는 데 사용된 후에는 즉시 무효화되며, 이후 해당 코드를 사용한 요청은 null 응답을 반환합니다.
인증 제공자(Authentication Provider) 옵션을 사용하면 해당 사이트가 OpenID 인증 제공자로 기능할 수 있습니다. 이는 사이트 사용자가 자신의 사이트 자격 증명을 사용하여 이를 허용하는 다른 사이트에 로그인할 수 있음을 의미합니다. 다른 BLOX CMS 사이트가 클라이언트 사이트 역할을 하여 이러한 로그인 자격 증명 교환을 허용할 수 있습니다.
BLOX CMS 사이트를 Discourse의 OpenID 인증 제공자로 구성하는 것이 가능해야 합니다. 그렇게 된다면, 사용자는 TownNews 사이트를 통해 Discourse 포럼에 로그인할 수 있게 됩니다. 이 설정을 하려면 Discourse 사이트에 Discourse OpenID Connect (OIDC) 플러그인을 설치해야 합니다. 구성 과정에서 시행착오가 있을 수 있습니다. 막히는 부분이 있으면 알려주세요. 도움을 드리겠습니다.