Markus Pfeiler์ Zammad ์์:
"Pls๋ ์ผ์ข
์ LDAP ์ธ์ฆ ํ๋ฌ๊ทธ์ธ/ํตํฉ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํฐ์ผ ์์คํ
์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ง์์ด 10๋ช
์ด์์ธ ํ์ฌ์์๋ Facebook ๋ฐ Google ๊ณ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์์ ์ผ๋ก๋ ์ด๋ฌํ ์ฑ๋์ด ์ฒ์์๋ ์ฐจ๋จ๋ฉ๋๋ค. ์ ๋นํ ์ด์ ๊ฐ ์๋ ๋ฐฉ์ด์ :)"
์ด๊ฒ์ #58์ ๋ณต์ ํ์ ๋๊น?
@wagnst ์ด๊ฒ์ ์๋ก์ด ๋ฌธ์ ์ ๋๋ค. #58์ ์ค๋๋์๊ณ ์ด๋ฏธ ๋ซํ์ต๋๋ค.
์ฐธ๊ณ : LDAP ํตํฉ์ด ํฌํจ๋ 2017๋ 1๋ถ๊ธฐ "์ํฐํ๋ผ์ด์ฆ ์ง์" ๊ธฐ๋ฅ์ ๊ฐ๋ฐ ์ค์ ๋๋ค. ๊ณ์ ์ง์ผ๋ด ์ฃผ์ธ์.
@rolfschmidt ์๋ง๋ OAuth2๋ฅผ ์ฌ์ฉํ ADFS๊ฐ ๋จ๊ธฐ ์๋ฃจ์ ์ผ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ๋ํ ์์์ด ์์ต๋๊น?
LDAP ์ง์์ ๋ฏฟ์ ์ ์์ ๊ฒ์ ๋๋ค. ์ธ์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ๋ณผ ์ ์๋์ง, ์ด๋ค ๋ค๋ฅธ ์ํฐํ๋ผ์ด์ฆ ๊ธฐ๋ฅ์ด ๊ตฌํ๋๊ณ ์๋์ง์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์ด๋ค ๋ด์ค? 2017๋
1๋ถ๊ธฐ๊ฐ ์ด๋๋ง ๋ง๋ฐ์ง์ ๋ค๋ค๋ฅด๊ณ ์์ต๋๋ค :)
4์ ์
๋ฐ์ดํธ์์ ์ด๊ฒ์ ์ป์ ์ ์๋ ๊ธฐํ๊ฐ ์์ต๋๊น?
์, ์ด ๊ธฐ๋ฅ์ ํ๋ฅญํ ๊ฒ์
๋๋ค!
์ฐ๋ฆฌ๋ ์ฝ 4000๋ช
์ ์ฌ์ฉ์์ 50๋ช
์ ์์ด์ ํธ๊ฐ ์๋ ์กฐ์ง์ด๋ฉฐ OTRS๋ฅผ Zammad๋ก ๊ต์ฒดํ ๊ณํ์
๋๋ค. ๊ทธ๋ฌ๋ LDAP ์ธ์ฆ์ด ์์ผ๋ฉด ์๋ฏธ๊ฐ ์์ต๋๋ค.
์๊ท๋ชจ ์ ๋ฐ์ดํธ, ํ ์คํธ ์ค์ ๋๋ค. ์ต์ํ ๋ค์ ๋ฆด๋ฆฌ์ค์์๋ ๋ฒ ํ ํ ์คํธ LDAP ํตํฉ์ด ์ ๊ณต๋ ๊ฒ์ ๋๋ค(๊ทธ ๋ฆด๋ฆฌ์ค ์ดํ์๋ ์ด๋ฅผ ์์ ์ ์ด๋ผ๊ณ ํจ).
์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํ ์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ(๋ชจ๋ ํผ๋๋ฐฑ ํ์ - ๊ฐ๋ฅํ ์ฝ๊ฒ ๋ง๋ค๋ ค๊ณ ๋
ธ๋ ฅํ์ต๋๋ค(ldap ์ค์ ์๋ ๊ฐ์ง ํฌํจ) - Zammad ๋ฐฉ์):
@bchynds
LDAP ์ง์์ ๋ฏฟ์ ์ ์์ ๊ฒ์ ๋๋ค. ์ธ์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ๋ณผ ์ ์๋์ง, ์ด๋ค ๋ค๋ฅธ ์ํฐํ๋ผ์ด์ฆ ๊ธฐ๋ฅ์ด ๊ตฌํ๋๊ณ ์๋์ง์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์ํฐํ๋ผ์ด์ฆ ๊ธฐ๋ฅ: ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ญํ ๊ด๋ฆฌ์ ๋๋ค(๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๋ถ์ฌ ์ค ๋ฐ ๊ตํ).
๋ฉ์ง๋ค์. ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ 25,000๋ช ์ ์ฌ์ฉ์์ ํจ๊ป ํ ์คํธํ ์ ์๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
๋ฉ์ง๋ค์. ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ 25,000๋ช ์ ์ฌ์ฉ์์ ํจ๊ป ํ ์คํธํ ์ ์๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
๐
์๋ ํ์ธ์,
LDAP๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์์ด์ ํธ ์ฌ์ฉ์์ ๋ง์ด๊ทธ๋ ์ด์ /๋ณํฉ์ด ์์ต๋๊น?
LDAP๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์์ด์ ํธ ์ฌ์ฉ์์ ๋ง์ด๊ทธ๋ ์ด์ /๋ณํฉ์ด ์์ต๋๊น?
์ด๋ฏธ ์กด์ฌํ๋ ์ฌ์ฉ์๋ฅผ ์๋ณํ๋ ค๋ฉด ๊ธฐ์กด ์ฌ์ฉ์ ๊ธฐ๋ฐ์์ ๋ก๊ทธ์ธ ๋ฐ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๊ฒ์ํ์ญ์์ค(๋ ์ค ํ๋๋ ์ผ์นํด์ผ ํจ).
์๋ ,
๋๋ ldap ํตํฉ์ด ์ด์ delevop ๋ธ๋์น์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ์ ๋ ์ง๊ธ ํ ์คํธ ๋ชจ๋์ ์์ผ๋ฉฐ ์ฝ 10๋ถ ๋์ "์ฃผ์ด์ง ๊ตฌ์ฑ์ผ๋ก ํญ๋ชฉ ๋ถ์ ์ค..." ์์ ์ ํ๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ AD์๋ ์ฝ 25,000๋ช ์ ์ฌ์ฉ์๊ฐ ์์ต๋๋ค. ์กฐ๊ธ ๊ธฐ๋ค๋ฆฌ๊ฒ ์ต๋๋ค.
@Julian0o ๋น์ ์ ๋น ๋ฅธ ์ฌ๋์ ๋๋ค!
์ ๋ ์ง๊ธ ํ ์คํธ ๋ชจ๋์ ์์ผ๋ฉฐ ์ฝ 10๋ถ ๋์ "์ฃผ์ด์ง ๊ตฌ์ฑ์ผ๋ก ํญ๋ชฉ ๋ถ์ ์ค..." ์์ ์ ํ๊ณ ์์ต๋๋ค.
์ค์ผ์ค๋ฌ๊ฐ ์์๋์์ต๋๊น? 9,000๋ช ์ ์ฌ์ฉ์๊ฐ ์๋ ํ ์คํธ ํ๊ฒฝ์์๋ ์ฝ 60์ด๊ฐ ๊ฑธ๋ฆฝ๋๋ค.
์ถ์ : rails r 'Delayed::Worker.new.work_off'
๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ธฐ ์ค์ธ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
์ ์๋์ผ๋ก ์์ํ ์๋ ์์ต๋๋ค.
-๋จ์ ์ด๋ฆ
๋๋ ๊ธ์ํ์ต๋๋ค :) ๊ด๋ฆฌ์ ์ญํ ์ ์ง์ ํ๋ ๊ฒ์ ์์๊ณ ์ง๊ธ์ ์ผ๋ฐ ์ฌ์ฉ์์ ๋๋ค :)
@๋งํฐ๋
๊ทธ๊ฒ์ ๊ณ ์น ์กฐ์ธ์ด ์์ต๋๊น? ์ง๊ธ OTRS Config.pm์ด ๋๋ฝ๋์์ต๋๋ค. :D
๊ด๋ฆฌ์ ์ญํ ์ ๋ค์ ์ป์ผ๋ ค๋ฉด ๋ค์์ ์ํํ์ธ์.
rails c
u = User.find_by(email: '[email protected]')
u.roles = Role.where(name: ['Agent', 'Admin'])
u.save!
๊ทธ๋ฐ ๋ค์ ๋ค์ ๋ก๊ทธ์ธํ๋ฉด ๊ด๋ฆฌ์๊ฐ ๋ฉ๋๋ค.
๊ฐ์ฌ ํด์! ์ด์ ๋ ๋ฒ์งธ ์๋ ;)
์ถ์ : ์ฝ๋๋ฅผ ์์ธํ ๋ณด์ง ์๊ณ ์ด๋ฌํ ๋ช ๋ น์ ์ป์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ถ์ : ์ฝ๋๋ฅผ ์์ธํ ๋ณด์ง ์๊ณ ์ด๋ฌํ ๋ช ๋ น์ ์ป์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋๋ถ๋ถ์ rails ํ์ค ๋ช ๋ น์ ๋๋ค. ํ์ง๋ง ์นํธ ์ํธ๋ฅผ ๋ง๋ค์ด์ผ ํ ์๋ ์์ต๋๋ค....
์ด๊ธฐ ๋๊ธฐํ์๋ ์ฝ 10๋ถ์ด ์์๋์์ต๋๋ค.
์ด์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
An error occurred: Can't connect to '' on port '389', Connection refused - connect(2) for 127.0.0.1:389
๊ตฌ์ฑ๋ LDAP ํธ์คํธ๋ " ldaps://xxx.lan "์
๋๋ค.
ํธ์ง: 5๊ฐ์ IP ์ฃผ์๊ฐ ๋ค์ ์๋ dns ์ฃผ์๊ฐ ์๋ strickt IP ์ฃผ์๋ก ๋ ๋ฒ์งธ ์๋๋ฅผ ํฉ๋๋ค.
log/production.log๋ฅผ ์ป์ ์ ์์ต๋๊น?
@martini ๊ทํ์ ์ฐํธ ์ฃผ์๋ก ๋ก๊ทธ๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ด๋๋ก ๊ฐ์ผ ํ ๊น์?
@martini ๊ทํ์ ์ฐํธ ์ฃผ์๋ก ๋ก๊ทธ๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ด๋๋ก ๊ฐ์ผ ํ ๊น์?
zammad ๋ท์ปด์์ ์ง์
์ด์ ์๋ํ๊ณ ๋๊ธฐํ๊ฐ ์งํ ์ค์
๋๋ค. ์ด์ 45๋ถ์ 6k/22k์ ๋๊ธฐํํฉ๋๋ค.
OTRS๋ ์ฌ์ฉ์๋ฅผ ๋๊ธฐํํฉ๋๊น?
ํ์ง๋ง uid ๋งคํ์ ๋ณ๊ฒฝํ ์ ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์์ด์ ํธ ๋ก๊ทธ์ธ ๋งคํ์ userprincipalname์ ์ฌ์ฉํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๊ด๋ฆฌ์์ ์์ด์ ํธ๋ง "์ญํ "๋ก ๋งคํํ ์ ์์ต๋๊น? ์ญํ ๊ด๋ฆฌ๋ง ๋๋ฝ๋ ๊ฒ์ ๋๊น ์๋๋ฉด ์ด๊ฒ์ด ์ต์ข ์ญํ ๊ด๋ฆฌ์ ๋๊น?
์ด์ ์๋ํ๊ณ ๋๊ธฐํ๊ฐ ์งํ ์ค์ ๋๋ค. ์ด์ 45๋ถ์ 6k/22k์ ๋๊ธฐํํฉ๋๋ค.
์ฐธ๊ณ ๋ก, ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค(์ต๋ 3๋ฐฐ ๋ ๋น ๋ฆ).
OTRS๋ ์ฌ์ฉ์๋ฅผ ๋๊ธฐํํฉ๋๊น?
์์ด์ ํธ(๋ฐ ์ญํ ํ ๋น)๋ OTRS์์ ๋๊ธฐํ๋ฉ๋๋ค. ๊ณ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
a) ๊ณ ๊ฐ์ด ldap์์ ์ ๊ฑฐ๋ ๊ฒฝ์ฐ(๊ธฐ๋ก ๋ฐ ๊ฐ์ ๋ฌธ์ )
b) ๊ณ ๊ฐ ์์ฑ์ ํตํด ํฐ์ผ์ ๊ฒ์ํ๋ ค๋ ๊ฒฝ์ฐ - ๊ฐ์ ์์, ํธ๋ฆฌ๊ฑฐ ์์, ๊ณ ๊ฐ ์์ฑ์ด ์๋ SLA ์์(๋ฐ์ดํฐ๊ฐ ์ต์ 2๊ฐ์ ๋ฐ์ดํฐ ์์ค์ ์๊ธฐ ๋๋ฌธ์ ๋ถ๊ฐ๋ฅ)
c) ldap ์ฟผ๋ฆฌ์ ์ฑ๋ฅ ๋ฌธ์ (๋คํธ์ํฌ์ ๊ด๋ จ๋ ์๋ ์์)
ํ์ง๋ง uid ๋งคํ์ ๋ณ๊ฒฝํ ์ ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์์ด์ ํธ ๋ก๊ทธ์ธ ๋งคํ์ userprincipalname์ ์ฌ์ฉํฉ๋๋ค.
ํ์ฌ ๋ชจ๋ ์ค์ ์ ์๋ ๊ฐ์งํ๋ ค๊ณ ํฉ๋๋ค. ๊ตฌ์ฑ ์ค์ ์ ๊ฐ์ /๊ฐํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์๋ ๊ฒฝ์ฐ.
๊ทธ๋ฆฌ๊ณ ์ ๊ด๋ฆฌ์์ ์์ด์ ํธ๋ง "์ญํ "๋ก ๋งคํํ ์ ์์ต๋๊น? ์ญํ ๊ด๋ฆฌ๋ง ๋๋ฝ๋ ๊ฒ์ ๋๊น ์๋๋ฉด ์ด๊ฒ์ด ์ต์ข ์ญํ ๊ด๋ฆฌ์ ๋๊น?
์ญํ ๊ด๋ฆฌ๋ ๋ค์ ๋ฆด๋ฆฌ์ค์ ์์ ๊ฒ์ ๋๋ค(์ฌ๊ธฐ์์ ๊ถํ์ด ์๋ ์ญํ ์ ์ ์ํ ์ ์์). ์ค์น(ํจํค์ง ์ค์น)์์ ํ ์คํธํ๋ ค๋ฉด https://raw.githubusercontent.com/zammad/zammad/develop/app/assets/javascripts/app/controllers/role.coffee ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์์ฐ์ ๋ค์ ์ฌ์ ์ปดํ์ผํ์ญ์์ค.
์๊ฒ ์ต๋๋ค.
๋ฐฉ๊ธ samaccountname ๋ฐ Mail์ ํตํด ๋ก๊ทธ์ธํ ์ ์๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ์ข์ ํ๋์ ๋๋ค! ์ฐ๋ฆฌ๋ฅผ ์ํด: UPN = ์ฐํธ ์ฃผ์
๋๊ธฐํ ์๊ฐ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์ด๊ธฐ ๋๊ธฐํ์ผ ๋ฟ์ด๋ฏ๋ก ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
ํ๊ทธ ์๋ ๊ฐ์ง์ ๋ํ ์กฐ์ธ์
๋๋ค. ์ฐ๋ฆฌ๋ ๋ง์ Microsoft ์๋น์ค(๋น์ฆ๋์ค์ฉ Skype, Exchange ๋ฑ)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก "ms"๋ก ์์ํ๋ ๋ชจ๋ ์์ฑ์ ์ ์ธํ ์ ์์ต๋๋ค. Zammad์์๋ ๊ตํ ๊ตฌ์ฑ์ด๋ ์ฌ์ฉ์ ์ค์ ์ด ํ์ํ์ง ์์ต๋๋ค(์ ์๊ฐ์๋). ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ๊ฒ์ด ๋นจ๋ผ์ง ์ ์์ต๋๋ค.
๋ด ์ฌ์ฉ์ ๊ณ์ ์๋ ์ฝ 45ms ์์ฑ์ด ์์ต๋๋ค.
์ญํ ํ๋ฌ๊ทธ์ธ์ ๊ฒฝ์ฐ ์ถ๊ฐ ์ ๋ณด๋ ๊ตฌ๊ธ๋ง์ด ํ์ํฉ๋๋ค. ;) ํ์ผ์ ์ ๋ก๋ํ์ง๋ง ์์ฐ์ ๋ฏธ๋ฆฌ ์ปดํ์ผํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฆ ๋๋ค.
ํธ์ง: ์ญํ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ์ข์ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์ต๋๋ค!
์ด์ ๊ฐ์๊ธฐ ๋๊ธฐํ๊ฐ ์ค์ง๋์์ต๋๋ค... ์ด๋ฏธ ๋ชจ๋ ์๋น์ค์ ์๋ฒ๋ฅผ ์์ ํ ๋ค์ ์์ํ์ต๋๋ค. ๋๊ธฐํ๋ฅผ ๋ค์ ์์ํ๊ธฐ ์ํ ์กฐ์ธ์ด ์์ต๋๊น?
์ด๋ฏธ rails r 'Delayed::Worker.new.work_off'
์
๋ฐ์ดํธ: Zammad๋ ์ค์ค๋ก ํด๋์ต๋๋ค! ๐
๊ธฐ๋ค๋ฆฌ๋ค ๊ฐ์๊ธฐ ๋๊ธฐํ๊ฐ ์๋ฃ๋์์ต๋๋ค!
๋๊ธฐํ ๋ค์ด๋ก๋ ์ฌ์ง์ ํ์ฑ ๋๋ ํ ๋ฆฌ์ ๋๊น? ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ thumbnailPhoto ์์ฑ์ ์ ์ฅํฉ๋๋ค.
๋ค์ ์ง๋ฌธ: ๋๊ธฐํ๋ ์ผ๋ง๋ ์์ฃผ ์คํ๋ฉ๋๊น? ์ด์ 24์๊ฐ์ด ์ง๋ฌ๊ณ ์๋ก์ด ๋๊ธฐํ๊ฐ ์์์ต๋๋ค.
๋๊ธฐํ ๋ค์ด๋ก๋ ์ฌ์ง์ ํ์ฑ ๋๋ ํ ๋ฆฌ์ ๋๊น? ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ thumbnailPhoto ์์ฑ์ ์ ์ฅํฉ๋๋ค.
์ง๊ธ ๋ง๊ณ . ํ์ง๋ง ์ข์ ์๊ฐ์ด์ผ!
๋ค์ ์ง๋ฌธ: ๋๊ธฐํ๋ ์ผ๋ง๋ ์์ฃผ ์คํ๋ฉ๋๊น? ์ด์ 24์๊ฐ์ด ์ง๋ฌ๊ณ ์๋ก์ด ๋๊ธฐํ๊ฐ ์์์ต๋๋ค.
๋งค์๊ฐ ๋๊ธฐํ๋ฅผ ์์ํ๋ ์ค์ผ์ค๋ฌ ํ ์ด๋ธ์ ์์ ์ด ์์ต๋๋ค(๋ฌผ๋ก script/scheduler.rb๊ฐ ์คํ ์ค์ด์ด์ผ ํจ).
๋ ์ผ์ฆ ์ฝ์์ ํตํด ์์ ์ด ์กด์ฌํ๋์ง ํ์ธํ์ญ์์ค:
Scheduler.where(name: 'Import Jobs')
์์ ์ (์ฌ) ์์ฑํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
Scheduler.create_or_update(
name: 'Import Jobs',
method: 'ImportJob.start_registered',
period: 1.hour,
prio: 1,
active: true,
updated_by_id: 1,
created_by_id: 1
)
=> #<:๊ด๊ณ i="5">]>
๊ทธ๋ฌ๋ Webinterface๋ ๋ค์๊ณผ ๊ฐ์ด ๋งํฉ๋๋ค.
๋ง์ง๋ง ๋๊ธฐํ
2017๋ 4์ 20์ผ 09:30 - 20.04.2017 09:51
์๋
ํ์ธ์ @Julian0o - Setting.get('import_backends')
ํ์ธํด ์ฃผ์๊ฒ ์ต๋๊น? LDAP ํญ๋ชฉ์ด ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ImportJob.all
๋ช
๋ น์ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํ์ญ์์ค. ์ถ๋ ฅ์๋ PW ๋ฐ payload
์์ฑ์ ๋งคํ๊ณผ ๊ฐ์ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. payload
์ ์ฝํ
์ธ ๋ ๊ด๋ จ์ด ์์ผ๋ฉฐ ์์ ํ ์ญ์ ํ ์ ์์ต๋๋ค.
๋ฃจ๋น ์ฝ์์์ ๋ถ์ฌ๋ฃ๊ธฐ์ ์ถ๋ ฅ์ด ๋๋ฌด ํฝ๋๋ค. ํ์ผ์์ ์ถ๋ ฅ์ ์ป๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ฏธ์ ๋๋ ์์ ํ ๋ฃจ๋น ๋ฉ์ฒญ์ด์ ๋๋ค :)
๋ง์ง๋ง ์คํ์๋ง ๊ด์ฌ์ด ์์ผ๋ฏ๋ก ImportJob.last.attributes.except('payload').inspect
์(๋ฅผ) ์๋ํ์ญ์์ค. ์ฌ์ ํ ํฐ ๊ฒฝ์ฐ File.write('/tmp/zammad_ldap.txt', ImportJob.last.attributes.except('payload').inspect)
๋ฅผ ์ฌ์ฉํ์ฌ /tmp/zammad_ldap.txt
ํ์ผ์ ์ธ ์ ์์ต๋๋ค.
irb(main):001:0> ImportJob.last.attributes.except('payload').inspect
=> "{\"id\"=>10, \"name\"=>\"Import::Ldap\", \"dry_run\"=>false, \"result\"=>{\"skipped\"=>122, \"created\"=>10, \"updated\"=>27, \"unchanged\"=>22256, \"failed\"=>0, \"sum\"=>22415, \"role_ids\"=>{3=>{\"created\"=>10, \"updated\"=>25, \"unchanged\"=>22220, \"failed\"=>0}, 2=>{\"created\"=>0, \"updated\"=>2, \"unchanged\"=>36, \"failed\"=>0}, 1=>{\"created\"=>0, \"updated\"=>1, \"unchanged\"=>5, \"failed\"=>0}}}, \"started_at\"=>Fri, 21 Apr 2017 08:32:15 UTC +00:00, \"finished_at\"=>Fri, 21 Apr 2017 08:44:07 UTC +00:00, \"created_at\"=>Fri, 21 Apr 2017 08:32:15 UTC +00:00, \"updated_at\"=>Fri, 21 Apr 2017 08:44:07 UTC +00:00}"
ํธ์ง : ๋ณ๊ฒฝ๋์์ต๋๋ค
Last sync
21.04.2017 10:32 - 21.04.2017 10:44
๊ฐ์ฌ ํด์! ํ ์ด์ํ๋ค์ ๐ค ์ด ์ง์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํด ์ฃผ์๊ฒ ์ต๋๊น?
ImportJob.where(name: 'Import::Ldap', dry_run: false).order(created_at: :desc).limit(1).first.attributes.except('payload').inspect
์ด ๋์ผํ ๋ช ๋ น๋ฌธ์ด ํ ์คํธ ๋ ๋๋ง์ ๋ด๋นํ๋ LDAP ํ๋ก ํธ์๋ ์ปจํธ๋กค๋ฌ ์์ ์ฌ์ฉ๋ฉ๋๋ค.
๋๋ ๋น์ ์ด ๊ทธ๋ ๊ฒ ํ๋ค๊ณ ํ์ ํ์ง๋ง ๋จ์ง ๊ฑด์ ํ ์ด์ ๋ก: ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํด ๋ณด์ จ์ต๋๊น?
irb(main):001:0> ImportJob.where(name: 'Import::Ldap', dry_run: false).order(created_at: :desc).limit(1).first.attributes.except('payload').inspect
=> "{\"id\"=>12, \"name\"=>\"Import::Ldap\", \"dry_run\"=>false, \"result\"=>{\"skipped\"=>110, \"created\"=>0, \"updated\"=>14, \"unchanged\"=>14176, \"failed\"=>0, \"sum\"=>22415, \"role_ids\"=>{3=>{\"created\"=>0, \"updated\"=>14, \"unchanged\"=>14145, \"failed\"=>0}, 2=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>31, \"failed\"=>0}, 1=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>5, \"failed\"=>0}}}, \"started_at\"=>Fri, 21 Apr 2017 10:33:07 UTC +00:00, \"finished_at\"=>nil, \"created_at\"=>Fri, 21 Apr 2017 10:33:07 UTC +00:00, \"updated_at\"=>Fri, 21 Apr 2017 10:40:31 UTC +00:00}"
๋๋ PC๋ฅผ ๋ถํ
ํ ํ ์์นจ์ ๊ทธ๊ฒ์ ์์์ฐจ๋ ธ๋ค. ๊ทธ๋์ ์ด์ฌํ ๋ฆฌ๋ก๋๋ฅผ ํด๋ดค์ต๋๋ค :)
์ด์ ๋๊ธฐํ๊ฐ ์คํ ์ค์
๋๋ค. ์๋ง๋ ๊ทธ๊ฒ์ ํ๋์ ํ์ด๋จธ ๋ฌธ์ ์์ต๋๋ค.
์ด์ํด ๐ค ์ด๊ฒ๋ ์ข์๋ณด์ด๋ค์. ์๊ฒ ์ต๋๋ค. ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์.
์๋ !
๋๋ ๋ํ LDAP ์ปค๋ฅํฐ๋ฅผ ์๋ํ๊ณ Julian0o( https://github.com/zammad/zammad/issues/350#issuecomment -295259450)์ ๋์ผํ ๋ฌธ์ ์ ๋ถ๋ช์ณค๊ณ ์ด๋ ํ admin-group๋ ์ ์ธํ์ง ์์์ต๋๋ค. ๊ทธ๋์ @martini ๋๋ถ์ ๋ ์ผ์ค ์ค๋ํซ์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ์ ์ญํ ์ ๋ค์ ์ป์์ต๋๋ค.
LDAP ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์๋ฃํ ์ ์ด ์์ง๋ง ๊ทธ๋ฃน์ด ์ด๋ฏธ ๋๊ธฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ ๋ด ์ฌ์ฉ์์๊ฒ ์ฌ์ ํ ๊ณ ๊ฐ ์ญํ ์ด ์๋ ๊ฒ ๊ฐ์ผ๋ฉฐ ์ค์ ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ด ์ข๊ฒ๋ ์ฌ์ ํ ๊ด๋ฆฌ์ ์์ ์ ์ํํ ์ ์์ผ๋ฏ๋ก ๋ ๋ฆฝ์ ์ธ ๊ด๋ฆฌ์ ์ฌ์ฉ์๋ฅผ ๋ง๋ค์์ง๋ง ์ฌ์ ํ ์ฒซ ๋ฒ์งธ ์ฌ์ฉ์์ ๋ํด ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น?
martinis rails ๋ช ๋ น์ ๋ค์ ์คํํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค. ๐
ํ์ง๋ง ์์ง ํ ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค. ์ด๊ธฐ ๋๊ธฐํ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ๊ทธ๋ฃน ๊ถํ์ ๋๊ธฐํํด๋ ๋ฉ๋๊น?
์ ๊ฒฝ์ฐ์๋ ๋๋ฌด ๋ง์ ์ฌ์ฉ์๊ฐ ๋๊ธฐํ๋์ด LDAP-์ฐ๊ฒฐ-๋ง๋ฒ์ฌ๋ฅผ ์ข
๋ฃํ์์ ๊นจ๋ฌ์์ง๋ง ์์์ ์ค๋ช
ํ ์ํฉ์ ์ฒํ์ต๋๋ค.
์ด์ ๋ถํฐ LDAP ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์ค๋จ๋์์ต๋๋ค.
๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ค์ง/์ฌ์์ํ ์ ์์ต๋๊น?
์๋ ํ์ธ์ @SGVubmluZ0cK - rails ๊ด๋ฆฌ ์ฝ์ ์ ์ฌ์ฉํ๊ณ ๋ค์ ์ธ ๊ฐ์ง ๋ช ๋ น ๊ฐ๊ฐ์ ์ถ๋ ฅ์ ์ ๊ณตํ ์ ์์ต๋๊น?
Setting.get('import_backends')
ImportJob.last.attributes.except('payload').inspect
ImportJob.where(name: 'Import::Ldap', dry_run: false).order(created_at: :desc).limit(1).first.attributes.except('payload').inspect
๊ฐ์ฌ ํด์!
Rails ๊ด๋ฆฌ ์ฝ์์ ๋ค์๊ณผ ๊ฐ์ด ๋งํฉ๋๋ค.
irb(main):004:0> Setting.get('import_backends')
=> ["Import::Ldap"]
irb(main):005:0> ImportJob.last.attributes.except('payload').inspect
=> "{\"id\"=>55, \"name\"=>\"Import::Ldap\", \"dry_run\"=>false, \"result\"=>{\"skipped\"=>2, \"created\"=>2, \"updated\"=>0, \"unchanged\"=>496, \"failed\"=>0, \"sum\"=>2403, \"role_ids\"=>{3=>{\"created\"=>2, \"updated\"=>0, \"unchanged\"=>493, \"failed\"=>0}, 2=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>3, \"failed\"=>0}, 1=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>1, \"failed\"=>0}}}, \"started_at\"=>Wed, 26 Apr 2017 09:57:42 UTC +00:00, \"finished_at\"=>nil, \"created_at\"=>Wed, 26 Apr 2017 09:57:42 UTC +00:00, \"updated_at\"=>Wed, 26 Apr 2017 10:00:11 UTC +00:00}"
irb(main):006:0> ImportJob.where(name: 'Import::Ldap', dry_run: false).order(created_at: :desc).limit(1).first.attributes.except('payload').inspect
=> "{\"id\"=>55, \"name\"=>\"Import::Ldap\", \"dry_run\"=>false, \"result\"=>{\"skipped\"=>2, \"created\"=>2, \"updated\"=>0, \"unchanged\"=>496, \"failed\"=>0, \"sum\"=>2403, \"role_ids\"=>{3=>{\"created\"=>2, \"updated\"=>0, \"unchanged\"=>493, \"failed\"=>0}, 2=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>3, \"failed\"=>0}, 1=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>1, \"failed\"=>0}}}, \"started_at\"=>Wed, 26 Apr 2017 09:57:42 UTC +00:00, \"finished_at\"=>nil, \"created_at\"=>Wed, 26 Apr 2017 09:57:42 UTC +00:00, \"updated_at\"=>Wed, 26 Apr 2017 10:00:11 UTC +00:00}"
์ ๋ง ๊ฐ์ฌํฉ๋๋ค!
์๋
ํ์ธ์ @SGVubmluZ0cK - ์ธ๋ป ๋ณด๊ธฐ์ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ ๋ณด์
๋๋ค. ํ์คํ ๊ทธ๋ ์ง ์์ต๋๋ค. ์ ๋ฌธ์ ๋ฅผ ๋ง๋ค์ด ์ฃผ์๊ฒ ์ต๋๊น? ์์คํ
/์ค์ ์ ๋ํ ๋ช ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค. ๋ ์์ธํ ์์๋ณด๋ ค๋ฉด ์์์ผ ํฉ๋๋ค. production.log
ํ์ผ์ ๋ํ ์์ฒญ๋ ์์ต๋๋ค. ์ ๊ณตํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค.
๋ํ ์ ๋ช
๋ น์ ์ถ๋ ฅ์ ๋ณต์ฌํ์ฌ ์ ๋ฌธ์ ์ ๋ถ์ฌ๋ฃ์ด ๋ชจ๋ ๊ฒ์ด ์ ์๋ฆฌ์ ์๋๋ก ํ์ญ์์ค. ๊ฐ์ฌ ํด์!
์๋ ํ์ธ์ @Julian0o - Zammad์์ Zammad ์ญํ ๋งคํ ๋๋ฝ์ผ๋ก ์ธํด Zammad๊ฐ ์ญํ ํ ๋น์ ์ ๊ฑฐํ ๋ฌธ์ ๋ ์์ ์ปค๋ฐ์ผ๋ก ์์ ๋์์ต๋๋ค. ๋งคํ์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ์ฌ์ฉ์๋ ์ด์ ๋ก์ปฌ ์ญํ ํ ๋น์ ์ ์งํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋งคํ์ด ์ง์ ๋๋ฉด LDAP๊ฐ ์ญํ ํ ๋น์ ์ฃผ์ ์์ค์ ๋๋ค. ํผ๋๋ฐฑ ๊ฐ์ฌํฉ๋๋ค ๐ค
์๋ ์๋ค์. ADFS๋ฅผ ํตํ ์ธ์ฆ์ด ๊ฐ๋ฅํฉ๋๊น, ์๋๋ฉด ํฅํ ๋ฆด๋ฆฌ์ค์ฉ ์นด๋์์ ๊ฐ๋ฅํฉ๋๊น? ๐
์๋ ํ์ธ์ @kmclea16์ ๋๋ค!
์, Zammad๋ ํ์ฌ ๊ณต๊ธ์๋ฅผ ํตํด ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๊ณ ๋๊ธฐํํ๊ธฐ ์ํด ํ๋ฅญํ omniauth gem ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ADFS ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. omniauth์ฉ ADFS๋ฅผ ์ ๊ณต ํ๋ gem ์ด ์ด๋ฏธ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ฐ๊น์ด ์ฅ๋์ ์ด๊ฒ์ ๊ตฌํํ ๊ณํ์ ์์ง๋ง ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ๋ ์์ ๊ฒ์ ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ pull ์์ฒญ์ ์ ๊ณตํ ์ ์๋์ง ๋๊ฐ ์๋๊น? ๊ทธ๊ฒ์ ๋ํ ์๋ก์ด ๋ฌธ์ ๋ฅผ ๋ง๋ค ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์ด์ ๊ณง ์ถ์๋ Zammad ๋ฒ์ 1.6 ๋ฆด๋ฆฌ์ค์ ๋ํด LDAP ์ธ์ฆ์ด ์ค๋น๋์์ต๋๋ค. ๐ ์ด ๊ธฐ๋ฅ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ธ์ ๋ ์ง ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ด์ด์ฃผ์ธ์.
@kmclea16 - ADFS ๋ฌธ์ ๋ ํ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค ๐
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ ๋ํ ์์์ด ์์ต๋๊น?