ฉันจะสลับชุดที่เก็บ Subversion ที่มีอยู่เพื่อใช้ ActiveDirectory ได้อย่างไร (svnserve / Windows)


12

ฉันมีชุดที่เก็บข้อมูลการโค่นล้มส่วนตัวในกล่อง Windows Server 2003 ซึ่งนักพัฒนาเข้าถึงผ่านทาง SVNServe ผ่านโปรโตคอล svn: // ขณะนี้เราได้ใช้ไฟล์authzและpasswdสำหรับแต่ละที่เก็บเพื่อควบคุมการเข้าถึงอย่างไรก็ตามด้วยจำนวนที่เพิ่มขึ้นของที่เก็บและนักพัฒนาที่ฉันกำลังพิจารณาเปลี่ยนไปใช้ข้อมูลประจำตัวของพวกเขาจาก ActiveDirectory เราทำงานในร้าน Microsoft ทั้งหมดและใช้ IIS แทน Apache บนเว็บเซิร์ฟเวอร์ของเราทั้งหมดดังนั้นฉันต้องการใช้ SVNServe ต่อไปถ้าเป็นไปได้

นอกจากนี้ยังเป็นไปได้ฉันยังกังวลเกี่ยวกับวิธีการย้ายที่เก็บข้อมูลของเราเพื่อให้ประวัติผู้ใช้ที่มีอยู่จับคู่กับบัญชี ActiveDirectory ที่ถูกต้อง โปรดทราบว่าฉันไม่ใช่ผู้ดูแลระบบเครือข่ายและฉันก็ไม่คุ้นเคยกับ ActiveDirectory มากดังนั้นฉันอาจต้องผ่านคนอื่น ๆ เพื่อรับการเปลี่ยนแปลงใน ActiveDirectory หากจำเป็น

ตัวเลือกของฉันคืออะไร?

อัปเดต 1: ปรากฏจากเอกสาร SVNที่โดยใช้ SASL ฉันควรจะได้รับ SVNServe เพื่อตรวจสอบสิทธิ์โดยใช้ ActiveDirectory เพื่อชี้แจงคำตอบที่ฉันกำลังมองหาคือวิธีการกำหนดค่า SVNServe (ถ้าเป็นไปได้) เพื่อใช้ ActiveDirectory สำหรับการรับรองความถูกต้องและวิธีการแก้ไขที่เก็บข้อมูลที่มีอยู่เพื่อทำการแมปผู้ใช้ svn ที่มีอยู่ใหม่

อัปเดต 2: ดูเหมือนว่าการสนับสนุน SASL ใน SVNServe นั้นใช้งานได้กับรูปแบบปลั๊กอินและเอกสารประกอบแสดงเป็นตัวอย่างเท่านั้น เมื่อมองไปที่Cyrus SASL Libraryดูเหมือนว่ามีการรองรับกลไก "การรับรองความถูกต้อง" จำนวนหนึ่ง แต่ฉันไม่แน่ใจว่าจะต้องใช้อันไหนในการรองรับ ActiveDirectory และฉันไม่สามารถหาเอกสารใด ๆ เกี่ยวกับเรื่องดังกล่าวได้

อัปเดต 3: โอเคดูเหมือนว่าเพื่อสื่อสารกับ ActiveDirectory ฉันต้องการใช้saslauthdแทนsasldbสำหรับคุณสมบัติauxprop_plugin แต่น่าเสียดายที่มันปรากฏว่าตามที่โพสต์ (อาจจะล้าสมัยและไม่ถูกต้อง) saslauthdไม่ได้สร้างบน Windows และความพยายามดังกล่าวจะถือว่าเป็นความก้าวหน้าในงาน

อัปเดต 4: โพสต์ล่าสุดที่ฉันพบในหัวข้อนี้ทำให้ดูเหมือนว่าไบนารีที่เหมาะสม () มีให้บริการผ่านMIT Kerberos Libraryแต่ดูเหมือนว่าผู้เขียนโพสต์นี้บน Nabble.comยังคงมีปัญหาในการทำให้สิ่งต่าง ๆ ใช้งานได้ .

ปรับปรุง 5: ดูเหมือนว่าจากการสนทนา TortoiseSVNและโพสต์นี้ใน svn.haxx.seแม้ว่า saslgssapi.dll หรือไบนารีที่จำเป็นใด ๆ จะพร้อมใช้งานและกำหนดค่าบนเซิร์ฟเวอร์ Windows ที่ไคลเอนต์จะต้องมีการกำหนดค่าเดียวกันเพื่อทำงานกับที่เก็บเหล่านี้ หากเป็นจริงเราจะสามารถรับการสนับสนุน ActiveDirectory จากไคลเอนต์ windows เท่านั้นหากมีการเปลี่ยนแปลงในไคลเอนต์เหล่านี้เช่น TortoiseSVN และ CollabNet บิลด์ของไคลเอ็นต์ไบนารีเพื่อสนับสนุนโครงร่างการพิสูจน์ตัวตนดังกล่าว แม้ว่านั่นคือสิ่งที่โพสต์เหล่านี้แนะนำ แต่สิ่งนี้ขัดแย้งกับสิ่งที่ฉันสันนิษฐานจากการอ่านอื่น ๆ ว่าการใช้งานร่วมกับ SASL ได้นั้นไม่จำเป็นต้องมีการเปลี่ยนแปลงไคลเอนต์ หลังจากอ่านเพิ่มเติมเล็กน้อยในเอกสารเกี่ยวกับ Cyrus SASL ในการโค่นล้มส่วนที่ 5 ระบุว่า "ไคลเอนต์ 1.5+ ที่มีการสนับสนุน Cyrus SASL จะสามารถรับรองความถูกต้องกับเซิร์ฟเวอร์ 1.5+ ที่เปิดใช้งาน SASL ซึ่งมีกลไกอย่างน้อยหนึ่งอย่างที่เซิร์ฟเวอร์รองรับได้รับการสนับสนุนจากไคลเอนต์ด้วย" ดังนั้นการสนับสนุน GSSAPI อย่างชัดเจน (ซึ่งฉันเข้าใจว่าเป็นสิ่งจำเป็นสำหรับ Active Directory) ต้องพร้อมใช้งานภายในไคลเอนต์และเซิร์ฟเวอร์

ฉันต้องบอกว่าฉันได้เรียนรู้วิธีมากเกินไปเกี่ยวกับเรื่องภายในว่าการโค่นล้มจัดการกับการรับรองความถูกต้องมากกว่าที่ฉันเคยต้องการหรือไม่ และน่าเสียดายที่ฉันเพียงแค่มองหาคำตอบว่าฉันสามารถรองรับการตรวจสอบสิทธิ์ Active Directory เมื่อใช้ SVNServe บนเซิร์ฟเวอร์ Windows และเข้าถึงสิ่งนี้จากไคลเอนต์ Windows หรือไม่ ตามเอกสารอย่างเป็นทางการดูเหมือนว่าสิ่งนี้เป็นไปได้ แต่คุณจะเห็นว่าการกำหนดค่านั้นไม่สำคัญถ้าเป็นไปได้เลย

อัปเดต: 6: ตั้งแต่การพัฒนาบน Subversion 1.7 กำลังจะหมดลงใครช่วยอะไรเพิ่มได้บ้างว่า Subversion 1.7 จะดีขึ้นหรือไม่เมื่อสถานการณ์ได้รับ SVNServe เพื่อรับรองความถูกต้องโดยใช้ Active Directory


จากนั้นดูที่นี่ .. stackoverflow.com/questions/333146แต่ดูเหมือนว่าฉันจะเป็นแฮ็ค คุณจะได้รับ IIS เคียงข้างกับ Apache [โดยการทำงานอย่างใดอย่างหนึ่งที่สองเช่นในพอร์ตที่แตกต่างกันหรือแตกต่างกัน IP]
pQd

2
+1 สำหรับคำถามนี้ เป็นสิ่งที่ฉันต้องการค้นหาคำตอบและล้มเหลว คนส่วนใหญ่พบว่าอาปาเช่ยอมรับได้ (โดยปกติจะอยู่ในรูปแบบ visualsvn) แต่มันเป็นความเจ็บปวดถ้าคุณมี svn: // การอ้างอิงมากมาย และฉันรู้สึกดีกว่าที่ฉันจะเรียกใช้ svnserve เพื่อเข้าถึงที่เก็บข้อมูลแทนที่จะเป็นอาปาเช่
Jim T

1
+1 ต้องการทำสิ่งนี้มานานแล้วเช่นกันฉันเกลียดที่จะต้องเรียกใช้ apache บนกล่องหน้าต่างเมื่อไม่จำเป็นต้องใช้ ... จุดพิเศษสำหรับการรวมเข้ากับ SSL ผ่าน IIS ^ ^
Oskar Duveborn

@ ออสการ์ - ฉันคิดว่ามันจะดีถ้าใครบางคนจะสร้างโมดูล WAS สำหรับ IIS7 และขึ้นสำหรับการโฮสต์ทั้งโปรโตคอล HTTP ที่ใช้ apache เช่นเดียวกับโปรโตคอล svnserve ภายใน IIS ถ้าฉันมีเวลามากขึ้นฉันจะเจาะลึกในการสร้างสิ่งนี้ใน. NET เป็นโครงการโอเพ่นซอร์ส
jpierson

คำตอบ:


5

ตามที่ได้กล่าวไปแล้วเซิร์ฟเวอร์ VisualSVN เป็นเครื่องมือที่คุณต้องการ มันเป็นแพคเกจแบบ all-in-one สำหรับ Windows ที่เพิ่งเกิดขึ้นเพื่อใช้ Apache ภายในมัน - คุณไม่มีทางรู้ได้นอกจากว่าคุณได้ไปโผล่ใน dll ที่มันติดตั้ง แต่สำหรับทุกคนมันเป็นบริการ Windows ที่มี mmc snap-in จัดการมัน คุณสามารถเปลี่ยนพอร์ตที่รันได้หากคุณมีพอร์ต 80 แล้ว

ฉันเข้าใจการสนับสนุน sasl ผ่าน svnserve กำลังทำงานอยู่ในขณะนี้


หากมีวิธีรับบริการ Apache ให้ทำงานผ่าน IIS หรือให้พวกเขาทั้งสองใช้พอร์ต 80 ดังนั้นมันจะดีมาก น่าเสียดายสำหรับผู้ที่ต้องการใช้ svnserve หรือใช้ IIS ดูเหมือนจะไม่มีตัวเลือกมากมายนอกจากรอดูว่าการทำงานกับ sasl ที่รองรับ svnserve นั้นมาจากการบรรลุผลหรือไม่ หากคุณไม่ได้มีปัญหามากเกินไปโปรดเชื่อมโยงไปยังสถานที่ที่เราสามารถรับข้อมูลล่าสุดเกี่ยวกับคุณสมบัตินี้ได้ โครงการ SVN แม้ว่าจะเพิ่งผ่านมาได้ดีขึ้น แต่ดูเหมือนว่าจะไม่สื่อสารความพยายามและความก้าวหน้าของพวกเขาต่อชุมชนที่ติดตามบั๊กของพวกเขา
jpierson

ฉันอยากรู้ว่าคุณอาจมีข้อมูลใด ๆ หรือไม่ว่าการสนับสนุน sasl ที่ / กำลังทำงานอยู่เพื่อ svnserve ได้รับผลสำเร็จหรือไม่ เราคาดหวังว่าจะเห็นการปรับปรุงใด ๆ ในการโค่นล้ม 1.7?
jpierson

1

ฉันกำลังใช้ apache กับ svn ที่ทำงานบนเดเบียนลินุกซ์อนุญาตกับเซิร์ฟเวอร์ไดเรกทอรีที่ใช้งานอยู่ ไคลเอ็นต์เชื่อมต่อกับที่เก็บข้อมูลผ่านโปรโตคอล http หากการตั้งค่านี้เป็นที่ยอมรับสำหรับคุณ - อ่านต่อไป

สิ่งนี้ควรทำงานภายใต้ apache สำหรับ windows แต่ฉันไม่เคยลองเลย สิ่งต่อไปนี้คือเดเบียนเฉพาะ แต่ควรทำงานในทำนองเดียวกันภายใต้ windows / distros อื่น ๆ คุณจะไม่สูญเสียประวัติ svn ของคุณในขณะย้าย ...

ติดตั้งซอฟต์แวร์ที่ต้องการ:

apt-get install libapache2-svn subversion apache2

ในการกำหนดค่าสำหรับ vhost ของ apache [symlink ที่สามารถพบได้ใน / etc / apache2 / sites-enabled] ภายใน VirtualHost เพิ่ม:

<Location /svn>
        DAV svn
        #change this to actual path
        SVNPath /full/path/to/your/current/svn/directory

        AuthType Basic
        AuthName "SVN Server"
        AuthBasicProvider ldap
        AuthzLDAPAuthoritative Off

        # provide here credentials for existing domain user. 
        # in my case domain is called domainName and user - user
        AuthLDAPBindDN "domainName\user"
        AuthLDAPBindPassword usersPassword
        # put here ip of the domain controler and full path to OU containing accounts
        AuthLDAPURL ldap://10.11.22.33:389/ou=Users,dc=domainName,dc=companyName,dc=whatever?sAMAccountName?sub?(objectClass=*)
        Require valid-user
        SVNAutoversioning on

        AuthzSVNAccessFile /etc/apache2/svn_authz
</Location>

ตรวจสอบให้แน่ใจว่า apache โหลดโมดูล ldap:

cd /etc/apache2/mods-enabled
ln -s ../mods-available/authnz_ldap.load
ln -s ../mods-available/ldap.load
/etc/init.d/apache2 reload

ตรวจสอบให้แน่ใจว่า apache สามารถแก้ไขไฟล์ในที่เก็บ svn:

chown www-data:www-data -R /full/path/to/your/current/svn/directory

svn_authz ของคุณควรมีกฎบอกว่าใครสามารถเข้าถึงอะไรได้บ้าง ในกรณีของฉัน:

[groups]
ops=jack.brown,john.smith

[/]
* = rw

[/priv]
* =
@ops = rw

คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์สำหรับไฟล์ที่นี่

หากคุณมาถึงตอนนี้ผู้ใช้ของคุณสามารถเช็คเอาต์ได้จากhttp: //server.address/svn/โดยใช้ไคลเอ็นต์ svn ใด ๆ [tortoise / cmdline / visual svn] พวกเขาจะเห็นประวัติทั้งหมดและอ่าน / เขียนต่อไป


1
การใช้ Apache อาจยอมรับได้หากไม่มีทางเลือกอื่น แต่ ณ ตอนนี้เรามี svn: // URL ที่อ้างอิงในฟอรัมและซอฟต์แวร์ติดตามบั๊กของเราอยู่แล้วและต้องการใช้ URL เหล่านั้นแทน นอกจากนี้เรายังได้เปิดพอร์ตที่เกี่ยวข้องสำหรับ SVNServe ในไฟร์วอลล์ของเรา หากมีวิธีเรียกใช้ Appache พร้อมกับ IIS บนกล่อง Windows Server 2003 ของฉันนี่อาจเป็นวิธีที่สมจริงที่จะลองแม้ว่าตอนนี้ฉันสนใจวิธีรับ SVNServe เพื่อตรวจสอบสิทธิ์โดยใช้ ActiveDirectory
jpierson

1

คุณสามารถใช้ saslNTML แทน GSSAPI saslNTML dll ถูกติดตั้งด้วย TSVN โดยค่าเริ่มต้นและฉันคิดว่ามันยังรวมอยู่ในไคลเอนต์ svn จาก collab.net

มีสองตัวเลือกที่คุณต้องตั้งค่าในไฟล์ sasl config ของคุณ:

ntml_server

และเป็นตัวเลือก

ntml_v2

และแน่นอนคุณต้องตั้งค่ารายการ mech ในไฟล์ปรับแต่งของคุณเพื่อรวม NTML

ฉันได้ลองทำสิ่งนี้เพียงครั้งเดียวกับ TSVN เมื่อฉันนำไปใช้ทั้งหมด แต่ฉันมีคนอื่นตั้งเซิร์ฟเวอร์ทดสอบสำหรับฉันดังนั้นฉันจึงไม่รู้ว่าตัวเลือกการตั้งค่าที่แน่นอนคืออะไร


ยอดเยี่ยมฉันจะลองใช้ดูในไม่ช้าและดูว่าฉันจะหาได้ที่ไหน
jpierson

ฉันได้ลองหลายอย่างแล้ว แต่ฉันได้รับข้อผิดพลาดต่อไปนี้ภายในเมื่อพยายามเช็คเอาต์โดยใช้ TortoiseSVN ข้อผิดพลาด: ข้อผิดพลาดการตรวจสอบสิทธิ์จากเซิร์ฟเวอร์: SASL (-13): ไม่พบผู้ใช้: ไม่พบข้อผิดพลาด: โทรกลับ: 2
jpierson

"ไม่พบผู้ใช้" หมายความว่าคอมพิวเตอร์ไม่ได้เป็นส่วนหนึ่งของโดเมนที่คุณพยายามตรวจสอบหรือผู้ใช้ไม่ทราบในโดเมน บางทีคุณสามารถลองจับภาพการรับส่งข้อมูลเครือข่ายและลองค้นหาว่าเกิดอะไรขึ้น?
Stefan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.