# OAuth SSO를 통한 자동 세션 관리

**URL:** https://meta.discourse.org/t/automatic-session-management-with-oauth-sso/167204
**Category:** SSO
**Created:** [10월 14, 2020, 3:57오후 UTC](https://meta.discourse.org/t/automatic-session-management-with-oauth-sso/167204 "2020-10-14T15:57:22Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![vagosduke](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/vagosduke/32/196991_2.png) [@vagosduke](https://meta.discourse.org/u/vagosduke)
#### Post date: [10월 14, 2020, 3:57오후 UTC](https://meta.discourse.org/t/automatic-session-management-with-oauth-sso/167204/1 "2020-10-14T15:57:22Z")

</div>

안녕하세요,

저희는 특정 폐쇄형 커뮤니티를 위해 여러 서비스를 운영 중이며, 소셜 플랫폼으로 Discourse를 도입하는 것을 검토하고 있습니다. Discourse 인스턴스를 저희 서비스 스위트에 가장 세련되고 기술적으로 자연스럽게 통합하는 최선의 방법이 무엇인지 궁금합니다.

예를 들어, 저희 스위트에는 자체 개발한 서비스 A와 서비스 B, 그리고 OAuth2 SSO 서비스가 포함되어 있습니다.

사용자가 서비스 A 또는 B에서 로그인 버튼을 클릭하면 SSO 서비스로 리다이렉트되어 로그인한 후, 평소처럼 원래 서비스로 돌아옵니다. 쿠키와 세션 관리를 통해 서비스 A에 로그인한 상태라면, 이후 서비스 B를 방문할 때 다시 로그인할 필요가 없습니다(이미 세션이 유지되어 있기 때문이죠).

마찬가지로, SSO 서비스로 로그인한 후 서비스 A 또는 B에서 Discourse 서비스로 자연스럽게 이동할 수 있는 방법을 원합니다. 사용자의 계정이 모든 서비스에 존재한다고 가정합니다. 현재 OAuth2 Discourse 플러그인을 평가해 보았으며, 저희 SSO 서비스와 함께 작동하지만, 사용자가 Discourse를 방문할 때 SSO로 다시 로그인하도록 클릭해야 하는 문제가 있습니다. 서비스 A 또는 B에서 공통 SSO를 통해 로그인할 때 Discourse의 세션도 자동으로 시작할 수 있는 API 호출과 같은 방법이 있을까요?

또한, 위 질문은 임베디드 컴포넌트를 통한 댓글 통합에도 해당됩니다. “공개” Discourse 서비스를 운영하면 댓글 섹션에 문제가 없으며, 댓글이 올바르게 임베드됩니다. 하지만 비공개 Discourse 서비스를 운영할 경우, 사용자가 사전에 Discourse에 로그인하지 않았다면 임베드된 댓글 창에 댓글이 올바르게 표시되지 않는 문제가 발생하며, 이는 무결성 있는 통합을 논할 때 문제가 됩니다.

이러한 문제를 우회할 방법이 있을까요? 실제 호출을 수행하기 전에 토큰 또는 쿠키를 디코딩하여 적절한 사용자를 즉시 인증하고 로그인하는 미들웨어 플러그인을 구축하는 것을 고려하고 있습니다. 이미 그런 플러그인이 존재합니까?

도움 주셔서 감사합니다

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [10월 14, 2020, 4:48오후 UTC](https://meta.discourse.org/t/automatic-session-management-with-oauth-sso/167204/2 "2020-10-14T16:48:53Z")

</div>

> [@vagosduke](#):
>
> Discourse를 방문할 때 사용자가 SSO로 로그인하기를 다시 클릭해야 합니다. Service A 또는 B의 공통 SSO를 통해 사용자가 로그인할 때 Discourse 세션도 자동으로 시작되도록 하는 API 호출 같은 방법이 있을까요?

이 기능을 사용하려면 `login required` 사이트 설정을 활성화하기만 하면 됩니다.

> [@vagosduke](#):
>
> “공개” Discourse 서비스를 운영하는 경우 댓글 섹션에는 문제가 없으며 댓글이 올바르게 내장됩니다. 하지만 비공개 Discourse 서비스를 운영하는 경우, 사용자가 사전에 Discourse에 로그인하지 않았다면 내장된 댓글 창에 댓글이 올바르게 표시되지 않으며, 이는 무결성 통합에 문제가 됩니다.

`login required` 사이트 설정을 활성화하면 이 문제도 해결됩니다.

---

<div class="post-metadata">

### Author: ![vagosduke](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/vagosduke/32/196991_2.png) [@vagosduke](https://meta.discourse.org/u/vagosduke)
#### Post date: [10월 14, 2020, 6:22오후 UTC](https://meta.discourse.org/t/automatic-session-management-with-oauth-sso/167204/3 "2020-10-14T18:22:36Z")

</div>

빠른 답변 감사합니다. 하지만 이 방법은 문제를 해결하지 못합니다. 내장된 Discourse 댓글 창이든 Discourse 사이트로 직접 이동하든, 이미 SSO를 통해 '서비스 A’에 로그인된 사용자는 다시 로그인해야 합니다.

두 경우 모두 환영 메시지와 로그인 버튼이 표시됩니다. “환영합니다. 계정이 필요합니다. 기존 회원에게 초대장을 요청하거나 계속하려면 로그인하세요.” 로그인 버튼을 클릭하면 로그인 창이 팝업되며 사용자 이름/비밀번호 또는 OAuth SSO를 통해 로그인하라는 메시지가 표시됩니다. SSO 세션이 아직 활성 상태이므로 SSO의 사용자 이름과 비밀번호를 다시 입력할 필요는 없지만, 사용자가 이런 경험을 하는 것은 원치 않습니다. 사용자가 '서비스 A’에 로그인하면 어떤 버튼도 다시 누르지 않고 자동으로 Discourse에도 로그인되기를 바랍니다.

이를 위해 무엇을 해야 하나요?  
참고로 저는 Discourse 버전 2.5.2를 사용하고 있습니다.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [10월 14, 2020, 6:28오후 UTC](https://meta.discourse.org/t/automatic-session-management-with-oauth-sso/167204/4 "2020-10-14T18:28:11Z")

</div>

> [@vagosduke](#):
>
> 관련 사항이라면 저는 Discourse 버전 2.5.2를 사용하고 있습니다.

최신 Discourse에서는 `login required`(로그인 필수)와 `auth immediately`(즉시 인증)가 모두 활성화된 경우, IdP(Identity Provider)에 이미 유효한 쿠키가 있는 한 사용자가 자동으로 Discourse에 로그인됩니다.

최신 버전 이전에는 이러한 ‘매직’ 로그인 플로우가 자체 SSO 프로토콜을 사용하는 사이트로 제한되어 있었습니다. 해당 프로토콜은 [Official Single-Sign-On for Discourse (sso)](https://meta.discourse.org/t/official-single-sign-on-for-discourse-sso/13045) 문서에서 설명하고 있습니다.

최신 버전으로 업데이트하는 것을 권장합니다.

---

<div class="post-metadata">

### Author: ![vagosduke](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/vagosduke/32/196991_2.png) [@vagosduke](https://meta.discourse.org/u/vagosduke)
#### Post date: [10월 14, 2020, 8:18오후 UTC](https://meta.discourse.org/t/automatic-session-management-with-oauth-sso/167204/5 "2020-10-14T20:18:02Z")

</div>

음, 저는 bitnami 이미지를 사용 중인데 최신 버전이 여전히 2.5.2라서, 그 부분은 조금 기다려야 할 것 같습니다(또는 수동 업데이트 방법을 찾거나 다른 이미지를 사용하는 방법도 있겠죠).

어쨌든 올바른 방향으로 안내해 주셔서 감사합니다. 정말 감사합니다!

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [10월 14, 2020, 8:22오후 UTC](https://meta.discourse.org/t/automatic-session-management-with-oauth-sso/167204/6 "2020-10-14T20:22:35Z")

</div>

> [@vagelis.doukakis](#):
>
> bitnami 이미지

bitnami 이미지는 Discourse 개발팀에서 지원되지 않으며, 수년에 걸쳐 소프트웨어의 일반적인 사용 방식과 많은 호환성 문제를 겪었습니다. [Discourse 공식 표준 설치](https://meta.discourse.org/t/discourse-official-standard-installation/142537)를 사용하는 것을 강력히 권장합니다.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [11월 13, 2020, 8:37오후 UTC](https://meta.discourse.org/t/automatic-session-management-with-oauth-sso/167204/7 "2020-11-13T20:37:00Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
