database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
ㆍLDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
LDAP Q&A 2202 게시물 읽기
No. 2202
내가 입력한 값과 AD에 있는 패스워드가 일치하는지 비교를 하려고 하는데...
작성자
권성용(kr77dash)
작성일
2005-09-06 13:26
조회수
8,235

java, jsp로 웹 페이지를 만들고있습니다.

웹페이지에는 회원 가입란이 있구요 회원 가입을 하려면 특정 AD서버에

등록되어있는 유저만이 회원을 가입할수 있습니다. 없으면 아예 가입 조차 안되구요..

이 부분까지는 회원가입을 할때마다 AD의 최상위 루트에서 입력한 아이디의 값이 있는지 확인하고

비교해서 일치하거나 그 아이디가 있으면 회원가입을 시키고

없으면 아예 가입조차 못하게 했는데는 성공했는데요..

 

그 다음에 문제는 회원가입을 할때 만약 아이디 값이 있으면 다시 패스워드를 물어봐서

자기가 입력한 패스워드가 AD에 등록되어있는 패스워드면 회원가입을 시켜주고

아니면 회원가입을 못시키게 하려고 합니다.

 

그런데 여기 페이지를 검색해보니 커브로스 암호화, MD4, 유니코드 포맷이라고 하고

패스워드는 쓰기만 가능한 포맷이라고 하는데..

전혀 방법이 없는건가요?? 혹시 경험해보신분들의 많은 조언 부탁드리구요

그리고 패스워드의 속성값이 어떻게 되는지도 알고싶습니다.. 부탁드립니다..

 

이 글에 대한 댓글이 총 4건 있습니다.

패스워드를 비교는 되지 않습니다. 따라서 JAVA라면

 

JNDI나 JDK를 사용하실텐데.

 

Bind(ID,PW)로 연결해 보고 Return값으로 패스워드가 맞았는지 아니면 틀렸는지 확인하시면 됩니다.

 

틀리면

49 Invalid credentials 메시지와 49번에러가 발생하겠지요

송상준(sjsong)님이 2005-09-08 10:45에 작성한 댓글입니다.

아... 그러는 방법이 있을수 있겠군요..

 

JNDI를 씁니다.. 그렇게 해보겠습니다. 감사합니다.. ^^

권성용(kr77dash)님이 2005-09-08 13:25에 작성한 댓글입니다.

// 제가 예전에 C#을 만든 소스중 일부입니다. 참고하세요.

 

public bool Authenticate(object credentials, out IIdentity userIdentity)      

{
         LocalAuthenticationProviderData data =
(LocalAuthenticationProviderData)_securityConfigurationView.GetAuthenticationProviderData(ConfigurationName);
         IntPtr tokenHandle = new IntPtr(0);
         NamePasswordCredential namePasswordCredentials = credentials as NamePasswordCredential;
         CacheManager cache = CacheFactory.GetCacheManager(); ;

         try
         { 
            tokenHandle = IntPtr.Zero;
            string password =

                 TransformPassword(namePasswordCredentials.PasswordBytes);

            // Call LogonUser to obtain a handle to an access token. . 

            // 리턴값을 조사하여 Exception을 Throw 하시면 되고 각 에러코드의 의미입니다.

           // .NET 2.0부터는 모두 순수 .NET API를 사용하실 수 있습니다.
            if(!LocalSecurityUtility.LogonUser(namePasswordCredentials.Name, data.Domain,
                     password, (int)LogonType.LOGON32_LOGON_INTERACTIVE,
                     (int)LogonProvider.LOGON32_PROVIDER_DEFAULT, ref tokenHandle))
            {
               int ret = Marshal.GetLastWin32Error();
               switch (ret)
               {
                  case 1326:
                     throw new System.Security.SecurityException("Login Failed");
                  case 1330:
                     throw new System.Security.SecurityException("Expired password");
                  case 1793:
                     throw new System.Security.SecurityException("Account is expired");
                  case 1909:
                     throw new System.Security.SecurityException("Password must be changed before first login");
                  default:
                     throw new System.Security.SecurityException("Authentication failed"); 
               }
                 
            }
            else
            {
               // impersonation 코드가 들어갑니다. 

                              return true; 
            } 
         }
         catch (System.Security.SecurityException ex)
         {
            throw ex;
         }
         catch (Exception ex)
         {
            throw new ApplicationException(ex.Message, ex);
         }
      }

김호범(trueccie)님이 2005-09-29 13:33에 작성한 댓글입니다.

권성용님! 

Active Directory 의 Password와 Login한 Password 비교(?) 하는것

성공하셨나요?

제가 하고자하는 것과 거의 유사한데 고수님의 도움을 부탁드립니다.

LDAP, Active Directory 를 활용하여 각각의 Application Login시

(C/S의 Powerbuilder, web환경 java 등등)

Password 를 Check하려 합니다.

사실 LADP, Active Directory 등 이제 접하는 완전초보인지라...

반갑기 그지없습니다.

다시한번 도움 부탁드리며 연락 기다리겠읍니다 jkim14@jackr.jnj.com

 

김진태님이 2006-03-17 17:09에 작성한 댓글입니다.
이 댓글은 2006-03-17 17:10에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
2206Berkeley DB DB size 질문 [1]
김태용
2005-11-07
7067
2205LDAP에서 버클리 DB와 SASL 그리고 SSL을 사용하는 이유가 무엇입니까? [3]
윤성중
2005-11-02
9605
2204LDAP 검색 성능 검사를 어떻게 해야하나요 [3]
윤성중
2005-11-02
7356
2202내가 입력한 값과 AD에 있는 패스워드가 일치하는지 비교를 하려고 하는데... [4]
권성용
2005-09-06
8235
2201[질문] sun one ldap sever 5.2 의 로드밸런싱 [2]
오종목
2005-09-04
6825
2200Active Directory에서 그룹(role) 정도를 얻어올때.. [1]
crazyonly
2005-08-29
6395
2199ldap server의 유저아이디를 대소문자 구분해서 인증하는 방법 좀 가르쳐 주세요..slapd.conf에서 어떻게 설정하면 되죠? 냉무 [1]
몰라1
2005-08-26
7414
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2021 DSN, All rights reserved.
작업시간: 0.013초, 이곳 서비스는
	PostgreSQL v13.3으로 자료를 관리합니다