Zammad: LDAP ์ธ์ฆ ํ†ตํ•ฉ

์— ๋งŒ๋“  2016๋…„ 11์›” 04์ผ  ยท  49์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: zammad/zammad

Markus Pfeiler์˜ Zammad ์†Œ์›:
"Pls๋Š” ์ผ์ข…์˜ LDAP ์ธ์ฆ ํ”Œ๋Ÿฌ๊ทธ์ธ/ํ†ตํ•ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ‹ฐ์ผ“ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ง์›์ด 10๋ช… ์ด์ƒ์ธ ํšŒ์‚ฌ์—์„œ๋Š” Facebook ๋ฐ Google ๊ณ„์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์ด๋Ÿฌํ•œ ์ฑ„๋„์ด ์ฒ˜์Œ์—๋Š” ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ •๋‹นํ•œ ์ด์œ ๊ฐ€ ์žˆ๋Š” ๋ฐฉ์–ด์„  :)"

feature backlog proposal

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  49 ๋Œ“๊ธ€

์ด๊ฒƒ์€ #58์˜ ๋ณต์ œํ’ˆ์ž…๋‹ˆ๊นŒ?

@wagnst ์ด๊ฒƒ์€ ์ƒˆ๋กœ์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. #58์€ ์˜ค๋ž˜๋˜์—ˆ๊ณ  ์ด๋ฏธ ๋‹ซํ˜”์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : LDAP ํ†ตํ•ฉ์ด ํฌํ•จ๋  2017๋…„ 1๋ถ„๊ธฐ "์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ง€์›" ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ณ„์† ์ง€์ผœ๋ด ์ฃผ์„ธ์š”.

@rolfschmidt ์•„๋งˆ๋„ OAuth2๋ฅผ ์‚ฌ์šฉํ•œ ADFS๊ฐ€ ๋‹จ๊ธฐ ์†”๋ฃจ์…˜์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

LDAP ์ง€์›์€ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ธ์ œ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”์ง€, ์–ด๋–ค ๋‹ค๋ฅธ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์–ด๋–ค ๋‰ด์Šค? 2017๋…„ 1๋ถ„๊ธฐ๊ฐ€ ์–ด๋Š๋ง ๋ง‰๋ฐ”์ง€์— ๋‹ค๋‹ค๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :)
4์›” ์—…๋ฐ์ดํŠธ์—์„œ ์ด๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ์ด ๊ธฐ๋Šฅ์€ ํ›Œ๋ฅญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค!
์šฐ๋ฆฌ๋Š” ์•ฝ 4000๋ช…์˜ ์‚ฌ์šฉ์ž์™€ 50๋ช…์˜ ์—์ด์ „ํŠธ๊ฐ€ ์žˆ๋Š” ์กฐ์ง์ด๋ฉฐ OTRS๋ฅผ Zammad๋กœ ๊ต์ฒดํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ LDAP ์ธ์ฆ์ด ์—†์œผ๋ฉด ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์†Œ๊ทœ๋ชจ ์—…๋ฐ์ดํŠธ, ํ…Œ์ŠคํŠธ ์ค‘์ž…๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ LDAP ํ†ตํ•ฉ์ด ์ œ๊ณต๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ทธ ๋ฆด๋ฆฌ์Šค ์ดํ›„์—๋Š” ์ด๋ฅผ ์•ˆ์ •์ ์ด๋ผ๊ณ  ํ•จ).

์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž‘์€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ(๋ชจ๋“  ํ”ผ๋“œ๋ฐฑ ํ™˜์˜ - ๊ฐ€๋Šฅํ•œ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค(ldap ์„ค์ • ์ž๋™ ๊ฐ์ง€ ํฌํ•จ) - Zammad ๋ฐฉ์‹):
ldap-preview

@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 ํ‘œ์ค€ ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์น˜ํŠธ ์‹œํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค....

image

์ดˆ๊ธฐ ๋™๊ธฐํ™”์—๋Š” ์•ฝ 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 ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ž์‚ฐ์„ ๋‹ค์‹œ ์‚ฌ์ „ ์ปดํŒŒ์ผํ•˜์‹ญ์‹œ์˜ค.

screen shot 2017-04-19 at 16 30 04

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ 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 ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์™„๋ฃŒํ•œ ์ ์ด ์—†์ง€๋งŒ ๊ทธ๋ฃน์ด ์ด๋ฏธ ๋™๊ธฐํ™”๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ด์ œ ๋‚ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์—ฌ์ „ํžˆ ๊ณ ๊ฐ ์—ญํ• ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉฐ ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
image

์šด ์ข‹๊ฒŒ๋„ ์—ฌ์ „ํžˆ ๊ด€๋ฆฌ์ž ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋…๋ฆฝ์ ์ธ ๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ค์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

martinis rails ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘

ํ•˜์ง€๋งŒ ์•„์ง ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋™๊ธฐํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ๊ทธ๋ฃน ๊ถŒํ•œ์„ ๋™๊ธฐํ™”ํ•ด๋„ ๋ฉ๋‹ˆ๊นŒ?
์ œ ๊ฒฝ์šฐ์—๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋™๊ธฐํ™”๋˜์–ด LDAP-์—ฐ๊ฒฐ-๋งˆ๋ฒ•์‚ฌ๋ฅผ ์ข…๋ฃŒํ–ˆ์Œ์„ ๊นจ๋‹ฌ์•˜์ง€๋งŒ ์œ„์—์„œ ์„ค๋ช…ํ•œ ์ƒํ™ฉ์— ์ฒ˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด์ œ๋ถ€ํ„ฐ LDAP ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
zammadldap
๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ค‘์ง€/์žฌ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @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 ๋ฌธ์ œ๋‚˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿ‘€

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰