ActiveDirectory를 사용하도록 기존 Subversion 저장소 세트를 전환하려면 어떻게해야합니까? (svnserve / 창)


12

개발자가 svn : // 프로토콜을 통해 SVNServe를 통해 액세스하는 Windows Server 2003 상자에 개인 Subversion 저장소 세트가 있습니다. 현재 우리는 각 저장소에 authzpasswd 파일을 사용하여 액세스를 제어하고 있지만 Active Directory의 자격 증명을 사용하도록 전환하려는 저장소 및 개발자 수가 증가하고 있습니다. 우리는 모든 Microsoft 상점에서 실행하고 모든 웹 서버에서 Apache 대신 IIS 대신 IIS를 사용하므로 가능한 경우 SVNServe를 계속 사용하는 것이 좋습니다.

가능한 것 외에도 기존 사용자의 기록이 올바른 ActiveDirectory 계정에 매핑되도록 리포지토리를 마이그레이션하는 방법에 대해서도 걱정하고 있습니다. 또한 네트워크 관리자가 아니며 ActiveDirectory에 대해 잘 알고 있지 않으므로 필요한 경우 ActiveDirectory에서 변경 사항을 적용하기 위해 다른 사람들을 거쳐야 할 수도 있습니다.

내 옵션은 무엇입니까?

업데이트 1 : SVN 설명서 에서 SASL을 사용하여 SVNServe가 ActiveDirectory를 사용하여 인증 할 수 있어야합니다. 명확히하기 위해 내가 찾고있는 대답은 인증에 ActiveDirectory를 사용하도록 SVNServe를 구성하는 방법 (가능한 경우)과 기존 저장소를 수정하여 기존 svn 사용자를 ActiveDirectory 도메인 로그인 계정으로 다시 매핑하는 방법입니다.

업데이트 2 : SVNServe의 SASL 지원은 플러그인 모델에서 작동하며 문서는 예제로만 표시됩니다. Cyrus SASL 라이브러리를 살펴보면 많은 인증 "메커니즘"이 지원되는 것처럼 보이지만 ActiveDirectory 지원에 어떤 것을 사용해야하는지 잘 모르겠거나 그러한 문제에 대한 문서를 찾을 수 없습니다.

UPDATE 3 : 좋아, 그럼 그것은 사용을 찾고 있어요 액티브 디렉토리 I와 통신하기 위해 보이는 saslauthd 대신 sasldb 에 대한 auxprop_plugin의 속성입니다. 불행히도 일부 게시물 (아마 오래되고 부정확 한)에 따르면 saslauthd 는 Windows에서 빌드되지 않으며 그러한 노력은 진행중인 작업으로 간주됩니다 .

업데이트 4 :이 주제에서 찾은 마지막 게시물은 MIT Kerberos 라이브러리를 통해 적절한 바이너리 ()를 사용할 수있는 것처럼 들리지만 Nabble.com 에서이 게시물 의 저자 가 여전히 문제가있는 것처럼 들립니다. .

업데이트 5 : TortoiseSVN 토론svn.haxx.se에 대한이 게시물과 같습니다.saslgssapi.dll 또는 필요한 바이너리가 Windows 서버에서 사용 가능하고 구성되어 있어도 이러한 리포지토리를 사용하려면 클라이언트도 동일한 사용자 지정이 필요합니다. 이것이 사실이라면, 우리는 이러한 인증 체계를 지원하기 위해 클라이언트 바이너리의 TortoiseSVN 및 CollabNet 빌드와 같은 이러한 클라이언트에서 변경된 경우에만 Windows 클라이언트에서 ActiveDirectory 지원을받을 수 있습니다. 이 게시물이 제안하는 내용이지만 SASL 호환 가능하다는 점에서 다른 독서에서 처음 가정 한 것과는 모순됩니다. 클라이언트를 변경할 필요가 없으며 서버가 인증 메커니즘을 처리하도록 설정해야합니다. Subversion의 Cyrus SASL에 대한 문서를 조금 더 자세히 읽은 후섹션 5에는 "Cyrus SASL을 지원하는 1.5+ 클라이언트는 SASL이 활성화 된 1.5+ 서버에 대해 인증 할 수 있습니다. 서버에서 지원하는 메커니즘 중 하나 이상이 클라이언트에서도 지원됩니다." 따라서 클라이언트와 서버에서 GSSAPI 지원 (Active Directory에 필요한 것으로 이해)을 사용할 수 있어야합니다.

나는 Subversion이 내가 원했던 것보다 인증을 처리하는 방법의 내부에 대해 너무 많이 배우고 있습니다. 불행히도 Windows 서버에서 SVNServe를 사용하고 Windows 클라이언트에서 액세스 할 때 Active Directory 인증을 지원할 수 있는지에 대한 답을 찾고있었습니다. 공식 문서에 따르면 이것이 가능하지만 구성이 사소한 것이 아니라는 것을 알 수 있습니다.

업데이트 : 6 : Subversion 1.7의 개발이 마무리되었으므로 SVNServe가 Active Directory를 사용하여 인증하는 상황에서 Subversion 1.7이 개선 될지 여부에 대해 아무도 추가 할 수 있습니까?


그렇다면 여기를보십시오. stackoverflow.com/questions/333146 그러나 그것은 꽤 해킹으로 보입니다. 당신은 아파치와 나란히 IIS를 얻을 수있다 [예를 들어 다른 포트 나 다른 IP에서 두 번째 것을 실행함으로써]
pQd

2
이 질문에 +1 그것은 내가 계속해서 답을 찾고 싶어하는 것입니다. 대부분의 사람들은 아파치를 받아 들일 수있는 것처럼 보입니다 (보통 visualsvn 형식). 그러나 이미 많은 svn : // 참조가 있다면 고통입니다. 그리고 아파치보다는 저장소 액세스를 위해 svnserve를 실행하는 것이 더 좋습니다.
Jim T

1
+1은 오래 전에도이 일을하고 싶었습니다. 필요하지 않을 때 원칙적으로 Windows 상자에서 아파치를 실행해야하는 것을 정말로 싫어합니다 ... IIS를 통한 SSL 액세스와 이것을 결합하기위한 추가 포인트 ^ ^
Oskar Duveborn

@Oskar-누군가 IIS7 용 WAS 모듈을 만들고 아파치 기반 http 프로토콜과 svnserve 프로토콜을 모두 IIS 내에서 호스팅하는 것이 좋을 것이라고 생각합니다. 내가 더 많은 시간을 할애한다면 .NET에서 이와 같은 것을 오픈 소스 프로젝트로 만드는 것에 대해 탐구 할 것입니다.
jpierson

답변:


5

이미 언급했듯이 VisualSVN Server는 원하는 도구입니다. 그 안에 아파치를 사용하는 Windows 용 올인원 패키지-설치하는 dll에서 mmc 스냅인이있는 Windows 서비스를 파헤 치지 않으면 알 수 없습니다. 그것을 관리하십시오. 포트 80을 이미 사용 중이면 실행중인 포트를 변경할 수 있습니다.

svnserve를 통한 sasl 지원이 현재 진행되고 있음을 이해합니다.


아파치 서비스가 IIS를 통해 작동하도록하거나 둘 다 포트 80을 사용하도록하는 방법이 있다면 좋을 것입니다. 불행하게도 svnserve를 고수하거나 IIS를 사용하려는 사람들에게는 svnserve에 대한 sasl 지원 작업이 실현되는지 기다리는 것 외에는 많은 옵션이없는 것 같습니다. 문제가 많지 않으면이 기능에 대한 최신 정보를 얻을 수있는 곳으로 연결하십시오. SVN 프로젝트는 최근에는 더 좋았지 만 버그 추적기를 통해 커뮤니티에 노력과 진전을 알리지 못하는 것으로 보입니다.
jpierson

svnserve를 위해 작업중 인 sasl 지원이 어떤 결실을 맺었는지 여부에 대한 의견이 있는지 궁금합니다. Subversion 1.7에서 개선 된 기능을 기대할 수 있습니까?
jpierson

1

나는 svn을 데비안 리눅스에서 실행중인 아파치를 사용하여 활성 디렉토리 서버에 대해 권한을 부여합니다. 클라이언트는 http 프로토콜을 통해 리포지토리에 연결합니다. 이 설정이 허용되는 경우 계속 읽으십시오.

이것은 또한 Windows 용 아파치에서 작동해야하지만 결코 시도하지 않았습니다. 다음은 데비안 특정이지만 Windows / 기타 배포판에서 비슷하게 작동해야합니다. 마이그레이션하는 동안 svn 기록을 잃지 않을 것입니다 ...

필요한 소프트웨어를 설치하십시오.

apt-get install libapache2-svn subversion apache2

아파치의 호스트에 대한 설정에서 [symlinks는 / 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>

아파치가 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

해당 파일의 구문에 대한 자세한 내용은 여기를 참조하십시오 .

도달 한 경우 사용자는 svn 클라이언트 [tortoise / cmdline / visual svn]를 사용하여 http : //server.address/svn/ 에서 체크 아웃 할 수 있습니다. 모든 기록이 표시되고 계속 읽거나 쓸 수 있습니다.


1
다른 대안이없는 경우 Apache를 사용하는 것이 가능할 수 있지만 현재로서는 내부 포럼 및 버그 추적 소프트웨어 전체에서 여러 svn : // URL을 참조했으며 해당 URL을 계속 사용하려고합니다. 또한 방화벽에서 SVNServe에 대한 관련 포트를 이미 열었습니다. 내 Windows Server 2003 상자에서 IIS와 함께 Appache를 실행하는 방법이 있다면 지금 시도하는 현실적인 방법 일 수 있습니다. 현재 SVNServe가 ActiveDirectory를 사용하여 인증하는 방법에 더 관심이 있습니다.
jpierson 2009

1

GSSAPI 대신 saslNTML을 사용할 수 있습니다. saslNTML dll은 기본적으로 TSVN과 함께 설치되며 collab.net의 svn 클라이언트에도 포함되어 있다고 생각합니다.

sasl 구성 파일에서 설정해야하는 두 가지 옵션 이 있습니다.

ntml_server

그리고 선택

ntml_v2

물론 NTML을 포함하도록 설정 파일에 mech list를 설정해야합니다.

모든 것을 구현했을 때 TSVN으로 한 번만 시도했습니다. 그러나 다른 사람이 나를 위해 테스트 서버를 설정 했으므로 정확한 구성 옵션이 무엇인지 알 수 없습니다.


훌륭합니다. 곧 시도해 볼 수 있습니다.
jpierson 2009

여러 가지를 시도했지만 TortoiseSVN을 사용하여 체크 아웃하려고 할 때 항상 다음과 같은 오류가 발생합니다. 오류 : 서버의 인증 오류 : SASL (-13) : 사용자를 찾을 수 없음 : 오류를 찾을 수 없습니다 : 콜백 : 2
jpierson

"사용자를 찾을 수 없음"은 컴퓨터가 인증하려는 도메인의 일부가 아니거나 사용자가 도메인을 모르는 것을 의미합니다. 네트워크 트래픽을 캡처하고 무슨 일이 일어나고 있는지 알아볼 수 있습니까?
Stefan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.