ohm-s
(Omar)
9월 13, 2021, 12:29오후
1
안녕하세요
Discourse SSO 를 통합하고 있는데, SSO 페이로드에서 해당 사용자가 관리자가 아니라고 명시되어 있음에도 불구하고 생성된 사용자가 관리자 권한을 얻는 문제를 겪고 있습니다.
현재 최신 베타 버전 2.8.0.beta6 [ f3273bd43e ]을 사용 중입니다.
예시는 다음과 같습니다:
SSO URL:
https://community.bloom.pm/session/sso_login?sso=ZXh0ZXJuYWxfaWQ9NjEzZjJmMzMzNWZkODc4NWU4Mjk4Y2JhJm5vbmNlPThiNzdjM2JlMDBmMThkMjYwMDhkYjkxOWQxODA4MzAyJmVtYWlsPW9tYXIlMkJtZW1iZXI0JTQwYmxvb20ucG0mdXNlcm5hbWU9bWVtYmVyNCZuYW1lPW1lbWJlcjQmYWRtaW49ZmFsc2UmbW9kZXJhdG9yPWZhbHNlJnN1cHByZXNzX3dlbGNvbWVfbWVzc2FnZT10cnVl&sig=fcb3e5d3d4b8c39078753cb495f4c3781dcca1f022851a2bdff2015e7fa489b1
sso 페이로드를 디코딩하면 다음과 같습니다:
external_id=613f2f3335fd8785e8298cba&nonce=8b77c3be00f18d26008db919d1808302&email=omar%2Bmember4%40bloom.pm&username=member4&name=member4&admin=false&moderator=false&suppress_welcome_message=true
그런데 member4 사용자는 관리자 권한으로 생성되었습니다.
IAmGav
(Gavin Perch)
9월 13, 2021, 12:33오후
2
설정 파일의 developer 항목에 member4의 이메일 주소가 포함되어 있나요?
DISCOURSE_DEVELOPER_EMAILS
거기에 나열된 모든 이메일 주소는 자동으로 관리자 권한을 부여받습니다.
2개의 좋아요
ohm-s
(Omar)
9월 13, 2021, 1:08오후
3
DISCOURSE_DEVELOPER_EMAILS에 없는 완전히 다른 도메인인 omar+member9@306.dev로 테스트해 봤는데도 문제가 여전히 남아 있습니다. 사용자에게 관리자 권한이 부여되었거든요.
SSO 서명에 사용 중인 API 키는 관리자 계정 소유인데, 이것이 영향을 미칠까요?
michaeld
(Michael - Communiteq)
9월 13, 2021, 8:30오후
4
ohm-s:
SSO 서명에 사용 중인 API 키
그렇게 들리지는 않네요. 무슨 작업을 하고 계신지 설명해 주실 수 있나요?
1개의 좋아요
ohm-s
(Omar)
9월 14, 2021, 9:07오전
5
기존 Discourse 사이트에 SSO를 방금 통합했는데, 이런 동작이 나타납니다.
사이트는 Docker(discourse_docker 저장소)로 실행 중입니다.
컨테이너에 로그인하여 Postgres DB에 접근해 보니, 해당 사용자의 관리자 플래그가 DB에서 false로 설정되어 있어 “make_developer_admin” 메서드에 의해 업데이트되지 않고 있습니다.
그 외 다른 원인이 있을까요?
ohm-s
(Omar)
9월 14, 2021, 9:11오전
6
저도 해당 플러그인을 사용하고 있습니다.
- git clone https:// github.com/discourse/docker_manager.git
- git clone https:// github.com/angusmcleod/discourse-events.git
- git clone https:// github.com/gdpelican/babble.git
- git clone https:// github.com/davidtaylorhq/discourse-whos-online.git
- git clone https:// github.com/discourse/discourse-checklist.git
- git clone https:// github.com/discourse/discourse-data-explorer.git
- git clone https:// github.com/BeXcellent/discourse-allowiframe.git
IAmGav
(Gavin Perch)
9월 14, 2021, 9:35오전
7
문제 해결을 위해 디버깅을 활성화하는 것이 좋습니다.
DiscourseConnect 디버깅을 돕기 위해 사이트 설정인 verbose_discourse_connect_logging을 활성화할 수 있습니다. 이 사이트 설정을 활성화하면 YOURSITE.com/logs에 풍부한 진단 정보가 표시됩니다. YOURSITE.com/logs 하단의 warnings 상자를 확인하십시오.
참고: Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)
ohm-s
(Omar)
9월 14, 2021, 11:28오전
8
사용자는 관리자(admin)가 아니지만, 더 근본적인 문제가 있습니다. 로그를 몇 가지 추가해 보았습니다.
ActiveRecord API를 사용하여 필터링하는 과정에서 버그가 발생한 것으로 보입니다. 쿼리를 로그로 확인해 보니 where 필터에 userid가 보이지 않아, 알림 데이터가 전역적으로 조회되고 있는 것처럼 보입니다.
포럼/토픽에서도 같은 일이 일어나고 있을 것으로 생각됩니다. userid 필터를 무시하고 모든 데이터를 가져오고 있는 것 같습니다.
이 문제를 어떻게 수정할 수 있을까요?
ohm-s
(Omar)
9월 14, 2021, 11:28오전
9
2번째 미디어 항목을 올립니다 (처음 오르는 사람이라서)
ohm-s
(Omar)
9월 14, 2021, 12:20오후
11
user.notifications에 필터가 추가되지 않는 것 같습니다. 코드에 where 조건을 수동으로 추가하여 모달 알림 표시에서는 수정되었지만, 상세 페이지는 다른 코드 경로를 사용하므로 여전히 모든 항목이 표시됩니다. 진정한 해결책은 무엇인가요?
ohm-s
(Omar)
9월 14, 2021, 12:31오후
12
rails 버전: 6.1.4.1
bundle exec gem list --local
*** 로컬 GEMS ***
actionmailer (6.1.4.1)
actionpack (6.1.4.1)
actionview (6.1.4.1)
actionview_precompiler (0.2.3)
active_model_serializers (0.8.4)
activejob (6.1.4.1)
activemodel (6.1.4.1)
activerecord (6.1.4.1)
activesupport (6.1.4.1)
addressable (2.8.0)
aws-eventstream (1.2.0)
aws-partitions (1.432.0)
aws-sdk-core (3.112.1)
aws-sdk-kms (1.44.0)
aws-sdk-s3 (1.96.1)
aws-sdk-sns (1.38.0)
aws-sigv4 (1.2.3)
barber (0.12.2)
bootsnap (1.8.1)
builder (3.2.4)
bundler (2.2.26)
byebug (11.1.3)
cbor (0.5.9.6)
chunky_png (1.4.0)
coderay (1.1.3)
colored2 (3.1.2)
concurrent-ruby (1.1.9)
connection_pool (2.2.5)
cose (1.2.0)
cppjieba_rb (0.3.3)
crass (1.0.6)
css_parser (1.10.0)
diffy (3.4.0)
discourse-ember-rails (0.18.6)
discourse-ember-source (3.12.2.3)
discourse-fonts (0.0.9)
ecma-re-validator (0.3.0)
email_reply_trimmer (0.1.13)
ember-data-source (3.0.2)
ember-handlebars-template (0.8.0)
ember-source (2.18.2)
erubi (1.10.0)
excon (0.85.0)
execjs (2.8.1)
exifr (1.3.9)
faraday (1.7.2)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
fast_blank (1.0.1)
fast_xs (0.8.0)
fastimage (2.2.5)
ffi (1.15.4)
fspath (3.1.2)
gc_tracer (1.5.1)
globalid (0.5.2)
guess_html_encoding (0.0.11)
hana (1.3.7)
hashie (4.1.0)
highline (2.0.3)
hkdf (0.3.0)
htmlentities (4.3.4)
http_accept_language (2.1.1)
i18n (1.8.10)
image_optim (0.30.0)
image_size (2.1.2)
in_threads (1.5.4)
jmespath (1.4.0)
jquery-rails (4.4.0)
json (2.5.1)
json_schemer (0.2.18)
jwt (2.2.3)
kgio (2.11.4)
libv8-node (15.14.0.1 x86_64-linux)
lograge (0.11.2)
logstash-event (1.2.02)
logstash-logger (0.26.1)
logster (2.9.7)
loofah (2.12.0)
lru_redux (1.1.0)
lz4-ruby (0.3.3)
mail (2.8.0.edge)
maxminddb (0.1.22)
memory_profiler (1.0.0)
message_bus (3.3.6)
method_source (1.0.0)
mini_mime (1.1.1)
mini_racer (0.4.0)
mini_scheduler (0.13.0)
mini_sql (1.1.3)
mini_suffix (0.3.2)
minitest (5.14.4)
msgpack (1.4.2)
multi_json (1.15.0)
multi_xml (0.6.0)
multipart-post (2.1.1)
mustache (1.1.1)
nio4r (2.5.8)
nokogiri (1.12.4 x86_64-linux)
oauth (0.5.6)
oauth2 (1.4.7)
oj (3.13.2)
omniauth (1.9.1)
omniauth-facebook (8.0.0)
omniauth-github (1.4.0)
omniauth-google-oauth2 (0.8.2)
omniauth-oauth (1.2.0)
omniauth-oauth2 (1.7.1)
omniauth-twitter (1.4.0)
openssl (2.2.0)
openssl-signature_algorithm (1.1.1)
optimist (3.0.1)
pg (1.2.3)
progress (3.6.0)
pry (0.13.1)
pry-byebug (3.9.0)
pry-rails (0.3.9)
public_suffix (4.0.6)
puma (5.4.0)
r2 (0.2.7)
racc (1.5.2)
rack (2.2.3)
rack-mini-profiler (2.3.3)
rack-protection (2.1.0)
rack-test (1.1.0)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.4.2)
rails_failover (0.7.3)
rails_multisite (3.1.0)
railties (6.1.4.1)
raindrops (0.19.2)
rake (13.0.6)
rbtrace (0.4.14)
rchardet (1.8.0)
redis (4.4.0)
redis-namespace (1.8.1)
regexp_parser (2.1.1)
request_store (1.5.0)
rinku (2.0.6)
rotp (6.2.0)
rqrcode (2.1.0)
rqrcode_core (1.2.0)
rtlit (0.0.5)
ruby-readability (0.7.0)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
sanitize (6.0.0)
sassc (2.0.1)
sassc-rails (2.1.2)
seed-fu (2.3.9)
sidekiq (6.2.2)
sprockets (3.7.2)
sprockets-rails (3.2.2)
sshkey (2.0.0)
stackprof (0.2.17)
thor (1.1.0)
tilt (2.0.10)
tzinfo (2.0.4)
uglifier (4.2.0)
unf (0.1.4)
unf_ext (0.0.7.7)
unicorn (6.0.0)
uri_template (0.7.0)
webpush (1.1.0)
xorcist (1.1.2)
zeitwerk (2.4.2)
ohm-s
(Omar)
9월 16, 2021, 11:11오전
13
새로운 Docker 컨테이너를 처음부터 시작하고 자산/데이터를 옮겼더니 문제가 해결되었습니다.
기존 컨테이너를 다시 빌드하는 것은 도움이 되지 않았습니다.
#closed
1개의 좋아요