묻고답하기
nmail xe 회원연동
2013.03.10 23:04
질문 그대로 회원연동 관련질문입니다.
################################################################################
# 엔메일과 외부회원모듈 연동방법
################################################################################
-. 외부회원모듈 연동을 위한 엔메일 환경설정 변경.
nmail/include/global_var.php
134~139 line)
// 외부회원모듈 연동 사용여부. (Y, N)
$G_SYS['SSO_ISUSE'] = 'Y';
// 외부회원모듈과의 연동처리시 보안을 위한 보안키입니다.(엔메일과 외부회원모듈에서 값이 동일해야 함.)
// 외부에 유출되지 않도록 유의하시고 설치후 반드시 아래 값을 임의의 문자열(32자내외)로 바꾸시기 바랍니다.
$G_SYS['SSO_KEY'] = '임의의문자열을여기에입력하시면됩니다';
// 외부회원모듈 가입/수정/탈퇴 링크.(외부회원모듈의 해당 링크를 따로 지정할 수 있습니다.)
$G_SYS['SSO_JOIN_URL'] = ''; // 기존 사이트의 회원가입 주소
$G_SYS['SSO_MODIFY_URL'] = ''; // 기존 사이트의 회원정보수정 주소
$G_SYS['SSO_OUT_URL'] = ''; // 기존 사이트의 회원탈퇴 주소
$G_SYS['SSO_PASSWDFIND_URL'] = ''; // 기존 사이트의 비밀번호찾기 주소
$G_SYS['SSO_NOT_URL_MSG'] = "외부회원모듈을 사용하도록 설정되었습니다.\\n\\n웹메일의 회원관리 기능을 사용하실 수 없습니다.";
$G_SYS['SSO_JOIN_LEVEL'] = $G[LEVEL][user]; // 외부회원모듈에서 가입시 부여될 레벨. '가입대기'는 'user'대신 'wait'로 변경.
-. URL로 전달되는 값의 처리시 유의사항.
: '비밀번호, 처리후 이동할 URL'등 전달되는 값에 특수문자가 들어갈 경우를 대비해야함.
: PHP의 경우 urlencode()함수를 사용해서 해당 값을 인코딩시킨후 전달해야함.
ex) $join_url = "sso_login.php?user=" . urlencode("UserID") . "&passwd=" . urlencode("1234");
-. 연동인증키 생성 방법.
: 불법적인 접근을 방지하기 위해 관리자가 입력해둔 include/global_var.php 파일의 $G_SYS['SSO_KEY'] 값과
처리할 사용자 아이디를 조합해 MD5 로 암호화한 값을 전달하는 것입니다.
ex)
$sso_key = md5('UserID' . '____SSO_KEY____');
$join_url = "sso_login.php?user=" . urlencode("UserID") . "&passwd=" . urlencode("1234") . "&sso_key=" . $sso_key;
: 위와 같이 아이디를 조합하게되므로 사용자마다 고유의 암호화키가 부여되어 다른 사용자에 대한 불법적인 접근을 막을 수 있습니다.
-. 외부모듈에서 URL을 통한 로그인 방법.
url) http://mail.domain.com/sso_login.php?name=이름&user=아이디&passwd=비밀번호&sso_key=연동인증키
-. 외부모듈에서 URL을 통한 로그아웃 방법.
url) http://mail.domain.com/sso_logout.php?user=아이디&url=처리후 되돌아갈 주소&sso_key=연동인증키
-. 외부모듈에서 URL을 통한 회원 가입 방법.
url) http://mail.domain.com/sso_join.php?domain=domain.com&name=이름&user=아이디&passwd=비밀번호&url=처리후 되돌아갈 주소&sso_key=연동인증키
-. 외부모듈에서 URL을 통한 회원정보변경(이름, 비밀번호) 방법.
url) http://mail.domain.com/sso_modify.php?domain=domain.com&name=이름&user=아이디&passwd=비밀번호&url=처리후 되돌아갈 주소&sso_key=연동인증키
-. 외부모듈에서 URL을 통한 회원 탈퇴 방법.
url) http://mail.domain.com/sso_out.php?domain=domain.com&user=아이디&url=처리후 되돌아갈 주소&sso_key=연동인증키
-. 특정 유저의 새로운 메일 갯수를 가져오는 방법.
: 소켓을 열어 아래 URL에 접속하면 메일 갯수만 '12'처럼 숫자만 출력되는데 이 값을 가져와서 출력하면 됩니다.
: 샘플파일인 sso_newmail.sample.php 소스를 참고하시면 됩니다.
url) http://mail.domain.com/sso_out.php?domain=domain.com&user=아이디&sso_key=연동인증키
################################################################################
# 주소창에서 보여지는 사용자의 비밀번호를 알 수 없는 값으로 변경하고 싶을 경우.
################################################################################
-. 로그인, 회원가입, 회원정보변경 처리시의 주소의 마지막에 "&passwd_enc=Y"를 추가한다.
-. 기존 사이트에서 비밀번호 값을 넘길때 BASE64_ENCODE(), URLENCODE()함수를 이용해서 넘긴다.
기존) $pwd = "1234";
url) http://mail.domain.com/sso_login.php?user=아이디&passwd=1234&sso_key=연동인증키
=>
변경) $pwd = URLENCODE(BASE64_ENCODE("1234"));
url) http://mail.domain.com/sso_login.php?user=아이디&passwd=MTIzNA%3D%3D&sso_key=연동인증키&passwd_enc=Y
################################################################################
# 로그인시 전달되는 사용자의 비밀번호가 이미 암호화되어 있어서 실제 값을 알 수 없을 경우.
################################################################################
-. 엔메일 환경설정파일에서 기존에 사용하던 비밀번호의 암호화 방식을 미리 지정해둔다.
: 비밀번호의 암호화 방식은 지정후 회원이 추가되면 바꿀 수 없으니 정확히 파악한후 수정하시기 바랍니다.
nmail/include/global_var.php
$G_SYS[PWD_ENC] = "MD5";
$G_SYS[PWD_ENC] = "MYSQL"; // MySQL 의 Password()함수.
$G_SYS[PWD_ENC] = "CRYPT";
$G_SYS[PWD_ENC] = "ORACLE_FUNC_ENCRYPT";
-. 외부모듈에서 'URL을 통한 로그인 방법'을 다음처럼 바꿔서 비밀번호가 이미 암호화된 상태임을 표시한다.
url) http://mail.domain.com/sso_login.php?user=아이디&passwd=비밀번호&sso_key=연동인증키
=>
url) http://mail.domain.com/sso_login.php?user=아이디&passwd=비밀번호&sso_key=연동인증키&is_pwd_enc=1
################################################################################
앞에 색칠한 곳의 설정은 했습니다.... 그런데 뒤에 얘기는 무슨 말인지 통 알수가 없어서 쉽게 풀어서 답좀 부탁드립니다.
댓글 2
-
푸시아
2013.03.10 23:10
-
왕초보당
2013.03.10 23:12
결혼협회 싸이트 메일이라 비영리단체 무료버전을 쓰고 있어서 답변이 어렵네요... 게시판에 올라온글들을 이해할수가 없어서요 -
푸시아
2013.03.11 00:25
저는 엔메일을 작업해본적이 없습니다.
그냥 주욱 읽어본 느낌으로 말씀드리자면,
일단 중간에 xe 멤버 모듈과 엔메일을 연동하는 모듈이 하나 더 있어야 됩니다.
이 모듈에서 소켓을 통해 통신을 해야할 것 같습니다.
php에서 소켓으로 해당 url 을 호출하였을때 되돌아 오는 값이 있습니다.
그 값을 가지고 위에 주욱 열거된 url 들을 사용하여 회원 가입 탈퇴 변경 로그인 로그아웃 등을 구현해야 합니다.
더 정확한 것은 고수님들께서 답변해 주실겁니다 ㅡ.ㅡ;
-
왕초보당
2013.03.11 12:24
그러게요 모듈을 찾을수가 없어서요
nmail 에 물어 보셔야 할 것 같습니다. 보통 nmail 이 유료 프로그램으로 알고 있으므로 nmail 에 문의 한다면 아마 답변을 얻으실 수 있을것 같습니다.