다음 게시글을 따라 하고 있습니다: Use Discourse as an identity provider (SSO, DiscourseConnect) Python 코드를 사용 중입니다. 아래 Python 코드는 URL을 출력하는데, 제 판단으로는 이 URL이 제 Discourse 인스턴스에서 https://forum.embeetle.com/session/sso_provider 에 접근하도록 올바르게 서명되었어야 합니다. 하지만 대신 "Login Error"라는 텍스트만 표시됩니다.
https://forum.embeetle.com/logs 에는 에러가 없으므로 어떻게 해결해야 할지 감이 잡히지 않습니다. 서명이 잘못되었음을 의미하는 건가요? 다른 제안이 있을까요?
참고로: 이 문제가 해결되는 대로 SSO 시크릿을 변경할 예정입니다.
import secrets
import base64
import urllib.parse
import hmac
import hashlib
forum_url = 'https://forum.embeetle.com'
target_url = 'https://embeetle.com/#account'
sso_secret = b'JCLSVcqbAnEPXz2p2xBY'
nonce = secrets.token_urlsafe()
payload = f'nonce={nonce}&return_sso_url={target_url}'
payload_base64 = base64.b64encode(payload.encode('utf-8')).decode()
payload_for_url = urllib.parse.quote(payload_base64)
signature = hmac.new(
sso_secret, payload_for_url.encode('utf-8'), hashlib.sha256
).hexdigest()
print(f'{forum_url}/session/sso_provider?sso={payload_for_url}&sig={signature}')
이 코드는 아래 curl 명령어와 같은 링크를 생성합니다:
johan@morla:~/sa\> curl 'https://forum.embeetle.com/session/sso_provider?sso=bm9uY2U9bExhRUZjRGFVd0NrNTFkMEVOeGc5dUtKZ0kwNHZNYng5VkpFR0RqRUg0OCZyZXR1cm5fc3NvX3VybD1odHRwczovL2VtYmVldGxlLmNvbS8jYWNjb3VudA%3D%3D&sig=70e647a1baad2e09ef6cdc6d87fae70bc27c6823369be20fd1b11ea536180343'
Login Errorjohan@morla:~/sa\>
사이트 설정에 대한 스크린샷은 다음과 같습니다:
무엇이 잘못된 건가요, 아니면 어떻게 디버깅할 수 있을까요?

