Discord 로그인 시마다 인증을 요구하지 않게 하기

안녕하세요!

자체 호스팅 설치 환경에서 Discord 로그인을 설정했습니다. 아주 잘 작동하긴 하는데… 딱 한 가지 작은 문제가 있습니다.

사용자가 Discord로 로그인할 때마다 매번 인증 페이지로 이동합니다. 즉, 로그인할 때마다 인증에 동의해야 합니다. 제 이해로는, Discord 로그인을 Discourse와 처음 연결할 때만 이 과정을 한 번 거치면 되는 것 같습니다.

이 문제를 어떻게 해결할 수 있을까요? 문서에 따라 설정을 진행했습니다.

3개의 좋아요

이 문제를 겪고 계신 분 계신가요?

2개의 좋아요

네, 제 인스턴스에서 시도해 봤고 문제를 재현할 수 있습니다.

2개의 좋아요

다른 사이트에서도 동일한 동작을 확인하시나요? 그렇다면 이는 Discord 로그인 시스템의 정상적인 동작일 수 있으며, Discourse만의 문제일 가능성은 낮습니다.

이것은 의도된 동작이 아닙니다. 제가 사용하는 다른 사이트와 포럼에서는 Discord로 로그인할 때 일회성 인증만 요구합니다. 그 이후로는 인증 페이지를 거치지 않고 Discord로 로그인할 때마다 자동으로 로그인됩니다.

이것은 Discourse와 관련이 있습니다.

시연하고 구현을 비교해 볼 수 있도록 공개 예시를 공유해 주실 수 있으신가요?

공개 예시라는 표현이 무슨 뜻인지 정확히 이해하지 못해 죄송합니다.

하지만 이것은 일반적인 경우가 아닙니다. 디스코드 인증은 아주 처음 한 번만 필요합니다.

제가 말하려는 것은:

그 중 하나에 대한 링크를 공유해 주시겠어요? 그러면 어떻게 구현되어 있는지 살펴보고, discourse를 그에 맞게 조정할 수 있을 것입니다.

제가 자주 찾는 메시지 보드입니다. 다만, 이 보드는 Discourse 소프트웨어가 아닙니다.

1개의 좋아요

인증 URL에서 none으로 설정된 prompt 매개변수가 누락되었기 때문인 것 같지 않나요?

prompt는 기존 인가(승인)가 있는 경우 인가 흐름이 어떻게 처리되는지를 제어합니다. 사용자가 이전에 요청된 스코프로 해당 애플리케이션에 인가를 한 적이 있고 prompt가 consent로 설정되어 있으면, 사용자에게 인가를 다시 승인하도록 요청합니다. none으로 설정되어 있으면 인가 화면을 건너뛰고 사용자의 인가를 요청하지 않은 상태로 리다이렉트 URI로 바로 리다이렉트합니다.

1개의 좋아요

아마도 좋은 점을 짚고 계신 것 같습니다. 다음 링크를 찾았어요.
https://community.auth0.com/t/discord-connection-prompts-for-consent-every-login/135157
혹시 Discourse 내에서 이 부분을 업데이트할 수 있을까요? 제 지식 범위 내에서 판단컨대, 이는 관리 패널이나 Discord 개발자 포털에서 제가 직접 처리할 수 있는 사항이 아닙니다.

2개의 좋아요

Discourse에는 Google Auth를 위한 프롬프트 설정이 있으며, Discord용 설정도 추가하는 것이 합리적이라고 생각합니다.

1개의 좋아요

저도 방금 이것을 발견했습니다.

이 로그인 설정 관련 파일이 Discourse 내부 어디에 설치되어 있는지 혹시 알고 계신가요? 해당 파일 안에 다음 내용을 넣고 다시 빌드해서 문제가 해결되는지 확인해보려고 합니다.

"upstream_params": {
			"prompt": {
				"value": "none"
			}
		},

수정: 다시 생각해 보니, 이 설정을 구현할 수 있는 파일을 찾을 수 없을 것 같습니다. 의도한 대로 작동하려면 Discourse 측에서 수정이 필요할 것 같습니다.

내 인스턴스에서 해당 문제가 발생하고 있습니다:

네, 팀의 소식이 나올 때까지 기다려야 합니다 :+1:

1개의 좋아요

좋아요. 업데이트를 기다리는 것 외에 다른 조치를 취해야 하나요?

이런 종류의 수정에는 실제 예상 완료일(ETA)이 없고, 긴급도 상태 흐름에 따라 달라지는 것 같네요. 그저 작은 불편함일 뿐이라고 생각하지만, 수정되는 걸 보면 정말 좋겠어요!

prompt=none을 추가하는 변경은 좋은 생각입니다. 누군가가 작성, 테스트 및 PR을 만들 수 있다면 변경 사항이 더 빨리 처리될 수 있을 것입니다.

관련 파일은 이 파일이지만, 정확히 어떤 변경이 필요한지는 바로 알지 못합니다.

2개의 좋아요

파일을 살펴보다가

option :authorize_params, prompt: 'none'

을

option :authorize_options, %i[scope permissions]

아래에 추가했습니다.

자체 호스팅 인스톨레이션에서 말이죠.

어떤 의미에서는 작동하는 것 같지만, 우리가 원하는 방식과는 다릅니다.

여전히 Discord 인증 페이지로 이동하지만, 더 이상 사용자가 authorize를 클릭할 필요가 없습니다. 페이지가 새로고침된 후 discourse 페이지로 돌아옵니다.

한 걸음 전진, 한 걸음 후퇴. :melting_face:

수정: @Arkshine과 함께 변경 사항을 테스트해 보았고, 동일한 결과를 얻었습니다.

1개의 좋아요

간단한 테스트를 수행했습니다 (https://discourse.arkshine.dev/):

인증 페이지는 표시되지만 자동으로 리디렉션됩니다.

1개의 좋아요

변경 사항이 적용되어도 여전히 Discord 인증 페이지로 이동하게 됩니다. 이렇게 되면 안 됩니다(다만, 이번에는 authenticate를 수동으로 누를 필요는 없습니다).

제안된 변경 사항으로 PR을 제출해도 불행히도 문제가 해결되지 않습니다.