2012-03-14 3 views
0

내 모든 사용자는 내 drupal 7 사용자 테이블에 저장됩니다.드루팔 (Drupal 7 싱글 사인온 (무들, 위키 등)

위키 및 무들과 같은 외부 사이트도 있습니다.

나는 Drupal-6과 Moodle을 사용하여 싱글 사인온을 사용했다. 다른 시스템의 무들 지원 사용자.

드루팔 7 함수 user_hash_password을 사용하여 무들에서 암호를 해시 할 때 암호가 같지 않습니다. 매번 새로운 해시가 있습니다.

Drupal 7 사용자 테이블의 암호와 관련된 다른 것이 있습니까?

답변

0

메뉴 훅을 사용하여 Drupal 7 모듈을 생성하십시오. 메뉴 후크는 사용자 이름과 암호를 $ _POST 변수로 받아 들여야하며 user_login()이라는 인증 추적을 따라야합니다.

function my_module_authentication_menu_hook() { 
    // Note anywhere below that I put return FALSE you should return a failed auth response. 
    // Where there is a return TRUE you should return a successful auth response. 
    // The formatting of the auth response is up to you with how your Moodle call will react. 
    if (!isset($_POST['username']) || !isset($_POST['password'])) { 
    return FALSE; 
    } 

    $username = $_POST['username']; 
    $password = $_POST['password']; 

    // Functionality from user_login_name_validate(). 
    if (user_is_blocked($username)) { 
    return FALSE; 
    } 

    // Functionality from user_login_authenticate_validate(). 
    // You should add flood handling in here as well, but it can not be IP based, unless you 
    // supply the IP of the user through your Moodle functionality. 
    if (user_authenticate($username, $password) === FALSE) { 
    return FALSE; 
    } 

    // See user_login_final_validate() and implement failed login functionality before success. 
    return TRUE; 
} 

내가 양심이 드루팔 통해 라우팅하고자 직접 데이터베이스를 쿼리하지 않으려면이며, 권장하지 수있는 또 다른 옵션을 :

그래서 기본적으로 당신이로 끝날 것입니다. user_check_password()의 코드를 _password_crypt(), _password_get_count_log2(), _password_base64_encode() 등의 종속 코드와 함께 재현해야합니다. 또한 사용자가 차단되었는지 또는 인증되지 않았는지 식별하는 기능을 재 작성해야합니다. 또한 사용자가 user_login_default_validators() 기능을 사용하여 로그인 할 수 있는지 확인해야합니다. 그런 다음 Drupal 코어에서 해당 코드가 업데이트되면 다시 업데이트해야합니다. 유지 보수를 위해 Drupal을 통한 라우팅을 권장합니다.

+0

참고로 단일 로그온과는 다른 공유 로그온을 수행합니다. 게시물에 싱글 사인온으로 태그가 지정되었지만 공유 사인에 관한 질문이있었습니다. 실제 싱글 사인온을 수행하려면 공유 쿠키, 세션 시간 초과 구성, 환경에 매우 특정한 기타 복잡한 문제 등이 훨씬 더 많이 필요합니다. –

0

CAS 모듈과 같은 모듈을 사용하여 암호 입력을 단일 사이트로 유도하는 것이 좋습니다. 무드와 일부 위키는이 IIRC를 지원합니다. 일반적인 전략을 사용하여 다른 필드를 제품간에 동기화시킵니다.