์ฑ๊ธ ์ฌ์ธ์จ์ ๊ดํ ์ง๋ฌธ์
๋๋ค. ์ฐ๋ฆฌ๋ ํ์ฌ์์ Microsoft Active Directory๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๋ก๊ทธ์ธ์ ldap-sync๋ก ์ ์๋ํฉ๋๋ค.
SSO๊ฐ ๊ฐ๋ฅํ์ง ๊ถ๊ธํฉ๋๋ค. ์ด๋ฏธ nginx๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํ๋ ค๊ณ ์๋ํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค :-(
์ฝ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋์? ์ฌ๋ฌ๋ถ ์ค ํ ๋ช ์ด ์ด๋ฏธ SSO๋ก Zammad๋ฅผ ์ค์ ํ์ต๋๊น? ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด๋ ์ง์นจ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์ @jaeger13 ์ ๋๋ค .
์ด๊ฒ์ ๋ฌผ๋ก ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ์ผ๋ก mod_auth_kerb์ ํจ๊ป Apache httpd๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
<LocationMatch "/auth/sso">
SSLRequireSSL
AuthType Kerberos
AuthName "Your Zammad"
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms YOUR.REALM
KrbLocalUserMapping on
KrbServiceName HTTP/[email protected]
Krb5KeyTab /etc/httpd/zammad.keytab
require valid-user
</LocationMatch>
์ ํํ uid ์์ฑ(์์ ์์์ ist sAMAccountName)์ ๋ฐ๋ผ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ Apache๋ฅผ nginx ๋์ ์ญ๋ฐฉํฅ ํ๋ก์๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
auth ๋ชจ๋์ด ํ๊ฒฝ ๋ณ์ REMOTE_USER ๋๋ HTTP_REMOTE_USER์์ ์ธ์ฆ๋ ์ฌ์ฉ์ ์ด๋ฆ์ ๋ฐํํ๋ ํ auth_mellon ๋ฑ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ชจ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ, ๋ก์ด
์๋ ํ์ธ์ @rkaldung ,
๋น ๋ฅธ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ๋๋ Apache์ ๋น์ ์ ์ง์์ ๊ทธ๊ฒ์ ์๋ํ ๊ฒ์
๋๋ค :-)
nginx๋ก ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ๋ฅผ ๋ฐ๋์ง๋ง :-(
๊ฐ์ฌ ํด์!
์๋ ํ์ธ์ @jaeger13 ์ ๋๋ค .
nginx๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง ํ์ฌ ํ ์คํธํ์ง ์๊ณ ์์ต๋๋ค. @martini ์ด๊ฒ์ 2์ผํธ?
์๋ ํ์ธ์ @rkaldung
NGINX๋ก ๋ฐฉ๋ฒ์ ์ค๋ช ํ ์ ์์ต๋๊น? ๊ทธ๊ฒ๋ ๋งค์ฐ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค. ๊ฐ์ฌ ํด์.
์๋ ํ์ธ์ @scimitar4444
@rkaldung ์ https://github.com/jgraichen/omniauth-kerberos ์ ๊ฐ์ ๋ ์ผ ์์ค์์์ ๊ตฌํ์ ์๋ฏธํ์ง๋ง ๋จผ์ Zammad์์ ๊ตฌํํด์ผ ํฉ๋๋ค. ๐ค
-๋จ์ ์ด๋ฆ
@martini ํญ์ ํ ๋ฒ๋ง ์ปค๋ฐํ๋ฉด ๋ฉ๋๋ค ๐
๋๋ ๋น์ ์ ์ง์์ ๋ฐ๋ผ SSO๊ฐ ์๋ํ๋๋ก ๋ ธ๋ ฅํ์ต๋๋ค. ๊ทธ๋ฌ๋ http://myserver.mydom.local/auth/sso๋ฅผ ํ์ํ๋ฉด ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋์๊ฐ๋๋ค. . . ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ต๋๊น?
(Stanford) Webauth(๋ฐ ldap ์ฌ์ฉ์)๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. SSO์ ์ฑ๊ณต์ ์ผ๋ก ๋ก๊ทธ์ธํ ํ ๋ก๊ทธ์ธํ๋ผ๋ zammad ํ๋กฌํํธ๊ฐ ํ์๋ฉ๋๋ค.
์ฌ์ฉ: ์ฐ๋ถํฌ 16.04; ์๋ง๋ 2.2.0; ์ํ์น, ๋ง๋ฆฌ์DB; (REMOTE_USER๋ webauth์ ์ํด ์ค์ ๋จ)
@rkaldung ๋น์ ์ sth๋ฅผ ์๊ณ
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
๋ฌธ์ ์ : lib/sso/env.rb์ ์๋ ํ์ํ ๋ชจ๋์ด PUMA์์ ํ์ํ request.env ์์ด ํธ์ถ๋์ด 'REMOTE_USER'๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ:
'create_sso' ํจ์ ๋ด 'zammad/app/controllers/sessions_controller.rb'์ ENV์ request.env์ 'REMOTE_USER'๋ฅผ ์ถ๊ฐํฉ๋๋ค.
# export required environment variables for sso
ENV['REMOTE_USER'] = request.env['REMOTE_USER']
ENV['HTTP_REMOTE_USER'] = request.env['HTTP_REMOTE_USER']
@martini ์ต์ ๋ฒ์ ์ PUMA์์ ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๊น?
ํธ์ง: ์๋ํ๋๋ก ํ๋ ค๋ฉด httpd.conf์์ ํค๋ ํ๋๋ฅผ ์ค์ ํ๋ ํด๋น ๊ท์น์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
RequestHeader merge REMOTE_USER %{REMOTE_USER}s
2018-01-08 ์์ :
์ด์ pikachuprof์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค. /etc/krb5.conf ๊ตฌ์ฑ์ ์คํ์์ต๋๋ค.
์ ๋ณด:
์ค๊ณ Zammad ๋ฒ์ : ์ต์
์ฌ์ฉ๋ Zammad ์ค์น ์์ค: rpm
์ด์ ์ฒด์ : CentOS 7
๋ธ๋ผ์ฐ์ + ๋ฒ์ : Firefox ์ต์
Apache Server Config:
<VirtualHost *:443>
ServerName ***
ServerAdmin ***
DocumentRoot "/opt/zammad/public"
<IfModule !mod_auth_kerb.c>
LoadModule auth_kerb_module /usr/lib64/httpd/modules/mod_auth_kerb.so
</IfModule>
ProxyRequests Off
ProxyPreserveHost On
<Proxy localhost:3000>
Require local
</Proxy>
ProxyPass /assets !
ProxyPass /favicon.ico !
ProxyPass /robots.txt !
ProxyPass /ws ws://localhost:6042/
ProxyPass / http://localhost:3000/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/opt/zammad/public">
Options FollowSymLinks
Require all granted
</Directory>
<Location "/auth/sso">
Order allow,deny
Allow from all
AuthType Kerberos
AuthName "Ticketsystem Kerberos Login"
KrbServiceName HTTP
KrbMethodNegotiate on
KrbMethodK5Passwd on
KrbLocalUserMapping off
KrbSaveCredentials on
Require valid-user
# Environment specific: Path to the keytab and the realm
Krb5Keytab /etc/kerberos.keytab
KrbAuthRealm ***
</Location>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/***
SSLCertificateKeyFile /etc/pki/tls/private/***
ErrorLog "logs/***-error_log"
CustomLog "logs/***-access_log" common
</VirtualHost>
https:// /auth/sso ๋ฐ "KrbLocalUserMapping on"์ ์ด๋ฉด ๋ธ๋ผ์ฐ์ ์ ๋ค์ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.์ธํฐ๋ท ์๋ฒ ์ค๋ฅ์๋ฒ์ ๋ด๋ถ ์ค๋ฅ ๋๋ ์๋ชป๋ ๊ตฌ์ฑ์ด ๋ฐ์ํ์ฌ ์์ฒญ์ ์๋ฃํ ์ ์์ต๋๋ค.admin@ ์ผ๋ก
์ด ์ค๋ฅ์ ๋ํ ์์ธํ ์ ๋ณด๋ ์๋ฒ ์ค๋ฅ ๋ก๊ทธ์์ ํ์ธํ ์ ์์ต๋๋ค.
"KrbLocalUserMapping off"๋ฅผ ์ค์ ํ๋ฉด ๋ด ๋ธ๋ผ์ฐ์ ๊ฐ https:// * /#login์ผ๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค.
"RequestHeader ๋ณํฉ REMOTE_USER %{REMOTE_USER}s"๋ฅผ ์ค์ ํ๋ ค๊ณ ํ์ง๋ง ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ๋์ธ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!
๋ ๋ค๋ฅธ ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ถ๊ฐํ์ต๋๋ค.
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !^.*zammad_session.*$
RewriteRule ^/$ https://%{SERVER_NAME}/auth/sso [R,L]
Apache-config์ ์ด๋ฌํ ํ์ zammad ์ฟ ํค๊ฐ ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ์๋ง '/'๋ฅผ '/auth/sso'๋ก ๋ฆฌ๋๋ ์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด '๋ด๋ถ ์๋ฒ ์ค๋ฅ'๊ฐ ๋ฐ์ํ๋ ๋ฌดํ ๋ฃจํ๋ฅผ ์์ฑํ์ง ์๊ณ SSO ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋๋ ์ ํ ์ ์์ต๋๋ค.
์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. . . ์ํ์น ๋ก๊ทธ๋ /auth/sso์ ๋ํ ๋ด ์ฌ์ฉ์ ์ด๋ฆ์ ํ์ํ๊ณ ๋ด ์์ฒญ์ /๋ก ๋ฆฌ๋๋ ์ ๋๊ณ ๋ด ์ฌ์ฉ์ ์ด๋ฆ์ ์ฌ๋ผ์ง๋๋ค. . . ๋ด๊ฐ create_sso ํจ์๋ฅผ ํธ์งํ ๋ ์ค์๋ฅผ ํ์ ์๋ ์์ต๋๋ค!? ๋๊ตฐ๊ฐ ๋์๊ฒ ํํธ๋ฅผ ์ค ์ ์์ต๋๊น?
@pikachuprof ์ ๋ omniauth-kerberos๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ ์์ ์ ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ด ๊ตฌํ์์๋ ์ฌ์ฉ์ ์ปดํจํฐ์์ ์ด๋ฏธ ์์ฑ๋ "kerberos ํฐ์ผ"์ ์ฌ์ฉํ๋ ๋์ Zammad์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋๋ง๋ค(๋ฌผ๋ก Kerberos ์๊ฒฉ ์ฆ๋ช
์ ์ฌ์ฉํ์ฌ) ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค. (์: kinit
๋๋ ๊ธฐํ "kerberos ํฐ์ผํ
ํด๋ผ์ด์ธํธ"์์)
ํดํน ์ํฉ์ ํผํ๊ธฐ ์ํด kerberos๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๋ก๊ทธ์ธ์ ์ ํฉํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๐
'์ผํ์ฑ ๋ก๊ทธ์ธ/์ธ์ฆ'์ด ํฌํจ๋ ๊ณ ๊ธ ๊ตฌ์ฑ(์: kinit
ํ ๋ฒ ์ฌ์ฉํ๊ณ ์ธ์ฆ)์ ๊ฒฝ์ฐ ๋ ์ด์ ์ธ์ฆํ์ง ์๊ณ zammad/๋ด๋ถ ์น์ฌ์ดํธ/ftp ๋ชจ๋ ์๋ฒ์ ssh/๋ก๊ทธ์ธํฉ๋๋ค( SPNEGO/GSSAPI)๋ ํ์ฌ ์ํ ์ค์ธ ํ๋ก ํธ์๋ ์น์๋ฒ(Apache์ ๊ฐ์)๋ฅผ ์์ ํ ๊ตฌ์ฑํด์ผ๋ง ์ํํ ์ ์์ต๋๋ค.
@muhammadn ์ฐ๋ฆฌ๋ Stanford Webauth(mod_auth_webauth)๋ผ๋ Kerberos ๊ธฐ๋ฐ ์ฑ๊ธ ์ฌ์ธ์จ ์๋น์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ํตํ ๋ก๊ทธ์ธ์ ํ์ฉํ๊ณ SSO์ฉ Kerberos-Token์ด ํฌํจ๋ ์ฟ ํค๋ฅผ ์ค์ ํ์ง๋ง ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์๋น์ค๋ก ์ ์กํ์ง ์๊ณ 'WebKDC'๋ก๋ง ์ ์กํฉ๋๋ค.
๋ฌผ๋ก ์ด ์ค์ ์์ ์ธ์ฆ์ Apache์ ์ํด ์ํ๋์ด์ผ ํ์ง๋ง Zammad๋ REMOTE_USER ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ "webserver-auth" ๋ฉ์ปค๋์ฆ์ด ์๋ํ๋๋ก(๋๋ ์ ์ฌํ๊ฒ?) ํ์ฉํ๊ณ ์ฐจ๋จ ๋ฐฉ๋ฒ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ฟ ํค ๊ฒ์ฌ์ ์์กดํ์ง ์๊ณ "๋ก๊ทธ์ธ ๋ฃจํ"์์ ๋ฒ์ด๋๋๋ฐ, ์ด๋ ์ฝ๊ฐ ์ ๋ขฐํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@pikachuprof https://github.com/muhammadn/zammad/commit/7e8e01bff8226f2d74e80cbc307416db9bf2ac1d ์์ ๊ตฌํ์ ํธ์ํ์ต๋๋ค.
ํด๋น ๊ตฌํ์ ๊ณต์์ ์ผ๋ก zammad ๊ธฐ๋ฅ์ด ์๋๋ผ omniauth-kerberos ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋ณด๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ๋ชจ๋ ๊ฒ์ด Zammad์ ์ํด ์ฒ๋ฆฌ๋๊ณ (๋ ์ผ ์์ค ๊ตฌํ์) ํค๋ ๋๋ mod_auth_webauth์ REMOTE_USER๊ฐ ํ์ํ์ง ์์ผ๋ฏ๋ก kerberos ์ง์์ผ๋ก ์ํ์น๋ฅผ ๊ตฌ์ฑํ ํ์๊ฐ ์์ต๋๋ค.
krb5.conf๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์์:
[logging]
default = FILE:/var/log/krb5.log
[libdefaults]
default_realm = ZAMMAD.COM
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
[realms]
ZAMMAD.COM = {
kdc = kdc.zammad.com
admin_server = kdc.zammad.com
default_domain = zammad.com
}
[domain_realm]
.zammad.com = ZAMMAD.COM
zammad.com = ZAMMAD.COM
๊ณต์ ๊ตฌํ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ด์ ๋ํ ๋ฌธ์ ๋ฅผ https://github.com/muhammadn/zammad/issues ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ zammad๋ก ๋ก๊ทธ์ธํ๋ ค๋ฉด ์์ญ์ด ๋๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ์: [email protected]
์ธ์ฆ์ ์ํด ๊ธฐ์กด kerberos ํฐ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๊น? ์ฐ๋ฆฌ ์ฌ์ฉ์๋ค์ ์ด๋ฌํ ํธ์ํ ์๋ฃจ์ ์ ์ต์ํ๋ฉฐ ์ค์ SSO๊ฐ ์๋ํ ๋๊น์ง zammad๋ก ์ ํํ ๊ธฐํ๊ฐ ์์ต๋๋ค.
๋์๊ฒ๋ ๊ฐ์ ๋ฌธ์ . ๋ ๊ฐ์ง ๋ฐฉ๋ฒ(Kerberos ๋ฐ X509 SSL ํด๋ผ์ด์ธํธ ์ธ์ฆ์)์ ์ฌ์ฉํ์ฌ Apache ์ธก( REMOTE_USER
์ฑ์ฐ๊ธฐ)์์ SSO ์ฐ๊ฒฐ์ ๋ง๋ค ์ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด ์ฌ์ฉ์ ๊ณ์ ์ Zammad LDAP ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ ์ฑ์์ ธ ์์ต๋๋ค.
/auth/sso
๋๋ฌํ๋ฉด ์ํ์น ๋ก๊ทธ์ ์ฌ์ฉ์ ๋ก๊ทธ์ธ์ด ํ์๋์ง๋ง(๊ทธ๋์ ์๋ํจ) ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ๋ค์ ๋์์ต๋๋ค.zammad/app/controllers/sessions_controller.rb
(ํดํน @pikachuprof), ๊ทธ๋ฌ๋ @EDVLeer๋ก, ํ๋ ๋๋ ์๋ชป๋ ์ฅ์์ ๋ฃ์ด ๋ ์ฝ๋๋ ์ดํ ๋ณ๊ฒฝํ๊ณ ์ฐ๋ฆฌ๋ ์ง๊ธ ๋ค๋ฅธ ์ฌ๋์ด ์ด๋๊ฐ๋ฅผ ๋ฃ์ดํด์ผํฉ๋๋ค.๊ทธ๋์...
/auth/sso
์ด ์ต์ ๋ฆด๋ฆฌ์ค์์ ๊ณ์ ์ ํจํฉ๋๊น?๋ ธํธ:
<Location "/auth/sso">
Options FollowSymLinks
AuthType Kerberos
AuthName "My Name"
KrbMethodNegotiate On
# 'Off' to force users having a valid kerberos ticket, and not prompting for a login/pass
KrbMethodK5Passwd Off
KrbAuthRealms MY-DOMAIN.FR
Krb5KeyTab /etc/krb5.keytab
KrbLocalUserMapping On
KrbServiceName HTTP
Require valid-user
</Location>
์ฐธ๊ณ : Apache 'CA ๋ฒ๋ค' ํ์ผ( SSLCACertificateFile
)์ CA ๊ณต๊ฐ ์ธ์ฆ์(.crt)๋ฅผ ์ถ๊ฐํด์ผ Apache๊ฐ ํด๋ผ์ด์ธํธ ์ธ์ฆ์๊ฐ ๊ด์ฐฎ์์ง ํ์ธํ ์ ์์ต๋๋ค.
# Let this before <Location> to get the certificate at the first connect, and avoid SSL renegotiation
# when we now the real url
SSLVerifyClient require
<Location "/auth/sso">
Options FollowSymLinks
SSLRequireSSL
SSLVerifyDepth 1 # Depend of your config. Can be higher
Require expr %{SSL_CLIENT_I_DN_CN} in {'MY CA NAME'}
SSLOptions +StdEnvVars
# Get the 'firstname.lastname' part of the corporate email, and populate REMOTE_USER
RewriteEngine On
RewriteCond %{SSL:SSL_CLIENT_S_DN_Email} ^(.+)@.+$
RewriteRule .* - [E=REMOTE_USER:%1]
RequestHeader set REMOTE_USER %{REMOTE_USER}e
</Location>
SSO ๋ฌธ์ ๋ฅผ "ํด๊ฒฐ"ํ ์ ์์ต๋๋ค. ํ์คํ ์๋ฒฝํ ๋ฐฉ๋ฒ์ ์๋์ง๋ง ์๋ํฉ๋๋ค.
๋ด ํ๊ฒฝ์ Postgres๊ฐ ํฌํจ๋ Apache2 2.4๊ฐ ํฌํจ๋ ์ต์ zammad ๋ฒ์ (2.5)์ ๋๋ค. mod_auth_kerb๋ฅผ ์ฌ์ฉํ์ฌ SSO๋ฅผ ๊ตฌ์ฑํ ํ ๋ค์ ์์ ์ ์ํํด์ผ ํฉ๋๋ค.
์ง์์ ๋๊ธฐํํ๋๋ก LDAP๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค. SAMACOUNTNAME์ ๋ก๊ทธ์ธ ์ด๋ฆ์ ๋งคํํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ด Windows ์ฌ์ฉ์ ์ด๋ฆ์ schman์ ๋๋ค. ๋ฐ๋ผ์ ์ด ์ฌ์ฉ์ ์ด๋ฆ์ผ๋ก ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค(์ด๋ฉ์ผ์ด ์๋).
๊ทธ ํ session_controller.rb๋ฅผ ํธ์งํ๊ณ ๋ค์ ์ค์ ์ถ๊ฐํฉ๋๋ค(173๋ฒ ์ค).
ENV['HTTP_REMOTE_USER']=request.env['HTTP_REMOTE_USER']
๊ทธ๋์ Zammad๋ HTTP_REMOTE_USER๋ฅผ ์๊ณ ์์ต๋๋ค. ๊ทธ ํ ๋ก๊ทธ์ธ์ด ์๋ํ์ง ์์ต๋๋ค. HTTP_REMOTE_USER์ ๊ฐ์ด ์ด์ [email protected]์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด vHost ๊ตฌ์ฑ์ ๋ค์ ์ค์ ์ถ๊ฐํฉ๋๋ค.
RequestHeader edit REMOTE_USER "@DOMAIN.AT" ""
๋ค์ ์์ํ ํ(Apache2 ๋ฐ Zammad) http://zammad.domain.at/auth/sso๋ฅผ ์ฌ์ฉํ์ฌ SSO์ ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค.
๋๊ตฐ๊ฐ ๋ ์ผ์ด๋ฅผ ํ ์ ์๋ค๋ฉด ๋ด ๋ธ๋ก๊ทธ ์ ์์ ๊ฒ์๋ฌผ์ ์์ฑํ์ต๋๋ค.
@schmanat "login-loop"์ ์ด๋ป๊ฒ ํด๊ฒฐํ์ต๋๊น? ์๋๋ฉด ์ฌ์ฉ์๊ฐ "/auth/sso" URL์ ์ฌ์ฉํ๋๋ก ํฉ๋๊น?
ํ์ฌ ์ฌ์ฉ์๋ /auth/sso url์ ์ป์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ด๊ฐ ํ๊ณ ๋ค๊ณ ์ถ์ ๋ค์ ๊ฒ์ ๋๋ค. ์์ ๋ช ๊ฐ์ง ์๊ฒฌ(RewriteRule)์ ๋ํ ๋ต๋ณ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ํ์ง ์์์ต๋๊น?
์, ๊ทธ๋ฌ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๊ฝค ์ ๋ขฐํ ์ ์์ต๋๋ค.
์ด ์์ ์ ์ํํ๊ณ ์ํํ ์์ ์ ๋ฌธ์ํํด ์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ถํํ๋ ๋๋ ๊ธธ์ ์์๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ฒฝํํ ๊ฒ์ฒ๋ผ ๋๋ "auth/sso" ๋์ ์ ๋๋ฌํ ํ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค. ๋ด๊ฐ ํ ๋ชจ๋ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
samaccountname
-> login
)zammad
๋ผ๊ณ ํจ)zammad
์๋น์ค ๊ณ์ ์ ๋งคํ๋ ์์ฑ๋ keytab/etc/krb5.conf
)kinit
๊ฒ์ฆ๋ kerberos ํ๊ฒฝsessions_controller.rb
(pikachuprof๊ฐ ์ค๋ช
ํจ)๋๋ ๋ํ schmant์์ ์ ๊ณตํ๋ ์๋ฃจ์ ์ ์๋ํ์ง๋ง ์๋ฌด ๊ฒ๋ ๋์์ด๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๋๋ ๋ด Apache2 ๋ก๊ทธ์
๋๋ค. ๋ณด์๋ค์ํผ ์ฌ์ฉ์๊ฐ ํต๊ณผํ๊ณ ์์ต๋๋ค... REMOTE_USER
/ HTTP_REMOTE_USER
ํ๊ฒฝ ๋ณ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์๋์ง ์ด๋ป๊ฒ ํ์ธํ ์ ์์ต๋๊น? ์๋ํ ์ ์๋ ๋ค๋ฅธ ๋ฌธ์ ํด๊ฒฐ ๋จ๊ณ๊ฐ ์์ต๋๊น?
zammad.example.com:443 10.1.4.197 - - [09/Aug/2018:09:39:23 -0500] "GET /auth/sso HTTP/1.1" 401 855 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
zammad.example.com:443 10.1.4.197 - [email protected] [09/Aug/2018:09:39:23 -0500] "GET /auth/sso HTTP/1.1" 302 969 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
zammad.example.com:443 10.1.4.197 - - [09/Aug/2018:09:39:23 -0500] "GET / HTTP/1.1" 200 1757 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
zammad.example.com:443 10.1.4.197 - - [09/Aug/2018:09:39:23 -0500] "POST /api/v1/signshow HTTP/1.1" 200 15874 "https://zammad.example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
zammad.example.com:443 10.1.4.197 - - [09/Aug/2018:09:39:24 -0500] "GET /api/v1/translations/lang/en-us?_=1533825563736 HTTP/1.1" 200 720 "https://zammad.example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
zammad.example.com:443 10.1.4.197 - - [09/Aug/2018:09:39:24 -0500] "GET /assets/images/fed16b83d2e87ea36cea961d6d8a2101.png HTTP/1.1" 304 210 "https://zammad.example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
์๋ ํ์ญ๋๊น,
@jeremyj563๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
SSO๋ก ๋ก๊ทธ์ธํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค
์ ๋ SSO์ ๊ด์ฌ์ด ์์ต๋๋ค.
SSO์ฉ Azure AD๋ฅผ ๊ตฌํํ๋ ์ต์ ์ ๋๋ค.
์ฐ๋ฆฌ๋ ๋งค์ฐ ๊ด์ฌ์ด ์์ต๋๋ค. ์ ๋ ํ์ฌ Univention Test App Center์์ ์ฑ์ ํ ์คํธํ๊ณ ์์ผ๋ฉฐ ๋งค์ฐ ๊ธฐ๋๋ฉ๋๋ค.
๊ท์ฐฎ๊ฒ ํด์ ์ฃ์กํฉ๋๋ค. docker compose๊ฐ nginx๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ univention์์๋ ์๋ํ์ง ์์ต๋๋ค.
์ฃผ์ : ์ด ๋ฌธ์ ๋๋ ๋ค๋ฅธ ๋ฌธ์ ์ ์ค๋ช ๋ ๋ฐฉ์์ผ๋ก SSO ๊ตฌํ์ ์ฌ์ฉํ๋๋ก ๊ฒฝ๊ณ ํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์ ์ ๊ณต๋ ๋ณ๊ฒฝ ์ฌํญ์๋ ์ฌ๊ฐํ ๋ณด์ ์ทจ์ฝ์ ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด ์ทจ์ฝ์ ์ ์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์์ ๋ํด SSO๋ฅผ ํตํด ์์ฑ๋ ์ธ์ ์ ์ ์งํฉ๋๋ค. ์ด๋ ์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉ์์ ๋ํด ์ด์ ์ ์์ฑ๋ SSO ์ธ์ ์ ์ธ์ํ ์ ์์์ ์๋ฏธํฉ๋๋ค(Zamad ์ปจํ ์คํธ์์).
์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๋๊น์ง SSO๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ทธ๋ฌ๋ ์ข์ ์์์ ์ฐ๋ฆฌ๊ฐ ๊ณต์ SSO ๊ตฌํ ์์ ์ ์์ํ๋ค๋ ๊ฒ์ ๋๋ค.
@rlue ๋๋ถ์ SSO(Single Sign-On)๊ฐ ๋ง์นจ๋ด develop
์ ๋๋ฌํ์ต๋๋ค ! ๋ช ์ฃผ ์์ ๊ณง ์ถ์๋ 3.2 ๋ฆด๋ฆฌ์ค์ ์ผ๋ถ๊ฐ ๋ ๊ฒ์
๋๋ค. develop
๋ถ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ Zammad ์ธ์คํด์ค์ ์
๋ฐ์ดํธ๋ ํ์ฌ ์ค๋จ๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ํด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ก์ด Zammad(ํ
์คํธ) ์์คํ
์์ SSO๋ฅผ ํ
์คํธํ ์ ์์ต๋๋ค.
@MrGeneration ๋ค์ ์์ ์๊ฐ์ SSO ๊ตฌ์ฑ์ ๋ค๋ฃจ๋๋ก ๋ฌธ์๋ฅผ ํ์ฅํ ์ ์์ต๋๊น?
ํ์ ์กฐ์น๊ฐ ์์์ต๋๋ค. ์์ ์ปค๋ฐ์ ์ ์ํ์ญ์์ค.
๋ถํํ๊ฒ๋ ์ฐ๋ฆฌ๋ ๋ฌธ์ ๐๋ฐ๋ ๋์ด ์ค๊ธฐ ์์ฒญ์ ํํ๋ก ๊ธฐ์ฌ ๋ง๋๋ ๋ช ๊ฐ์ง ์ฅ์ ๋ฌผ์ ์ง๋ฉด https://github.com/zammad/zammad-admin-documentation ๋๊ฒ ํ๊ฐ ๋ ๊ฒ์
๋๋ค.
API ์๋ํฌ์ธํธ๋ /auth/sso
์
๋๋ค. ๋ค์ ์ค ํ๋๊ฐ ์กด์ฌํ๊ณ ์ฌ์ฉ์์ login
์์ฑ์ ํฌํจํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
REMOTE_USER
HTTP_REMOTE_USER
X-Forwarded-User
์ง๋ฌธ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์. ๋ต๋ณ์ ๋๋ฆฌ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
์ง๊ธ ๋ซ์ต๋๋ค.
์์ ์ฑ์ ์ํด: SSO ๋ฌธ์๋ ํ์ฌ QA๋ฅผ ์งํ ์ค์
๋๋ค.
https://github.com/zammad/zammad-documentation/pull/147
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@rlue ๋๋ถ์ SSO(Single Sign-On)๊ฐ ๋ง์นจ๋ด
develop
์ ๋๋ฌํ์ต๋๋ค ! ๋ช ์ฃผ ์์ ๊ณง ์ถ์๋ 3.2 ๋ฆด๋ฆฌ์ค์ ์ผ๋ถ๊ฐ ๋ ๊ฒ์ ๋๋ค.develop
๋ถ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ Zammad ์ธ์คํด์ค์ ์ ๋ฐ์ดํธ๋ ํ์ฌ ์ค๋จ๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ก์ด Zammad(ํ ์คํธ) ์์คํ ์์ SSO๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค.@MrGeneration ๋ค์ ์์ ์๊ฐ์ SSO ๊ตฌ์ฑ์ ๋ค๋ฃจ๋๋ก ๋ฌธ์๋ฅผ ํ์ฅํ ์ ์์ต๋๊น?