Migrated password hashes support

Thanks @pfaffman

I’ve done some testing and can confirm that it doesn’t work with Drupal 7, which apparantly uses SHA-512 according to Drupal 7: Secure password storage by default at last | Jon Cave

I’ll create a PR if I’m able to add a compatible one.

Rich

3개의 좋아요

Hello :waving_hand:

I migrated a whole lot of content from bbPress over to my discourse installation. I can see all posts and users and stuff. But my users can’t login using their “old” password data from my WP site. I installed the plugin, its listed in my plugin section of my admin area. I checked all the available check marks.

Still: nobody can login!
I also have no idea where to apply the given code from the plugin’s readme:

user = User.find_by(username: 'user')
user.custom_fields['import_pass'] = '5f4dcc3b5aa765d61d8327deb882cf99'
user.save

Also I have no idea what exactly is meant by alternative password hashes talked about in the readme.

@michaeld could you provide some more guidance on how to use the plugin?

As far as I recall the bbpress importer supports the plugin, so you did everything right and that is all you would need to do.

1개의 좋아요

Oh my god, after some more testing it turned out that it actually worked. The problem was a changed password when I tested it :man_facepalming: Sorry! Thanks for the great plugin! Made my life a lot easier!

2개의 좋아요

안녕하세요, 이 작업을 정상적으로 수행하는 데 문제가 있습니다. 커스텀 필드 import_pass를 생성하고 플러그인을 설치했습니다. SMF 데이터베이스에서 다시 한 번 가져오기(import) 스크립트를 실행했지만 성공하지 못했고, 이후 아무도 로그인할 수 없습니다. 커스텀 필드에는 해시 값 대신 단순히 "-"만 표시됩니다.

다른 사용자들도 이전에 지적했듯이, 다음 코드를 어떻게 처리해야 할지 모르겠습니다:

user = User.find_by(username: 'user')
user.custom_fields['import_pass'] = '5f4dcc3b5aa765d61d8327deb882cf99'
user.save

어떤 조언이라도 감사하겠습니다. 이 코드는 smf2.rb 가져오기 스크립트 파일에 넣어야 하는 건가요, 아니면 다른가요?

그렇게는 작동하지 않습니다. 하지만 수입 과정에서 플러그인을 설치하거나 커스텀 필드를 수동으로 만들 필요가 없습니다. SMF2 스크립트가 이미 이를 처리해야 하므로 다른 문제가 있는 것입니다.

해당 코드는 스크립트 작성자를 위한 예시입니다. 이미 SMF2 스크립트에 포함되어 있습니다.

3개의 좋아요

감사합니다. 좋습니다. 즉, 수동으로 생성한 사용자 지정 필드를 제거하고 플러그인만 활성화해 두면, 필요한 시점에 비밀번호 해시를 자동으로 가져와서 작동할 것이라는 말씀이시죠?

플러그인이 의도된 기능을 수행하지 않는 이유를 확인하기 위해 살펴볼 수 있는 로그가 있나요?

해당 플러그인은 가져오기(importer)에 의해 설정된 사용자 지정 필드를 해석하고 사용하는 역할을 합니다. 사용자 지정 필드가 비어 있거나 존재하지 않는다면, 이는 플러그인의 문제가 아니라 가져오기 도구의 문제입니다.

2개의 좋아요

플러그인은 마이그레이션 전에 설치해야 하나요, 아니면 후에 설치해야 하나요? 아니면 차이가 없나요?

요약: 이후에 설치하세요.

플러그인은 실제로 마이그레이션된 포럼을 실행 중인 인스턴스에 설치해야 합니다.

마이그레이션 스크립트를 실행 중인 인스턴스에 플러그인을 설치했을 때 문제가 발생하는 사례를 확인했으므로, 해당 인스턴스에 설치하는 것은 권장하지 않습니다.

4개의 좋아요

안녕하세요,

Auth0의 비밀번호 해시를 사용해 테스트해 보신 분 계신가요?

Auth0의 비밀번호 해시 내보내기 기능은 유료 고객 전용 서비스라 제가 직접 테스트할 수 없는데, 제가 이 방법을 시도하기 전에 먼저 시도해 보신 분이 있는지 궁금해서 여쭤봅니다.

비밀번호가 10번의 솔트 라운드를 사용한 bcrypt로 해싱된 것으로 보입니다.

감사합니다.

2개의 좋아요

안녕하세요, Drupal 7 지원 관련해서 최근 변경 사항이 있는지 궁금합니다.

아, 2년 전 질문인데 놓치고 있었네요!

라운드 수와 관계없이 bcrypt는 지원되어야 하며, 라운드가 일반적인 방식으로 인코딩되어 있다면($2a$10$...) 그렇습니다.

아니요, 해당 코드는 3년 이상 변경되지 않았습니다.

1개의 좋아요

몇 년 전에 migratepassword 플러그인을 사용하여 포럼을 Discourse로 이전했습니다. 이전 포럼의 레거시 비밀번호 해시를 여전히 사용 중인 사용자의 수를 확인할 방법이 있을까요?

기술적으로 말하면, 사용자가 레거시 비밀번호 해시를 "사용"하는 것은 아닙니다.

마이그레이션 이후 사용자가 처음 로그인할 때, 입력한 비밀번호가 Discourse 비밀번호(초기에는 무작위 문자열입니다)와 일치하지 않으면 플러그인이 작업을 수행합니다.

  • 입력된 비밀번호가 import_pass 커스텀 필드와 일치하는지, 플러그인이 아는 모든 해시 방법을 사용하여 확인합니다.
  • 일치하는 항목을 찾으면 비밀번호를 사용자에게 저장한 후 import_pass 커스텀 필드를 삭제합니다.

따라서 몇 년이 지난 후에는 마이그레이션된 비밀번호를 사용하여 로그인하지 않은 사용자만 import_pass 커스텀 필드가 남아 있게 됩니다.

a) 로그인한 적이 없는 경우 (마지막 확인 날짜로 확인할 수 있습니다)
b) 마이그레이션된 비밀번호 대신 이메일, 다른 인증 방법 또는 비밀번호 재설정을 사용하여 로그인한 경우

:warning: 방금 a) 상황 b가 보안 문제를 초래할 수 있다는 사실을 깨달았습니다. 사용자가 비밀번호를 기억하지 못하여 비밀번호를 변경하거나 다른 인증 방법을 사용하는 경우, 마이그레이션된 비밀번호 해시가 여전히 남아 있어 새 비밀번호와 함께 사용될 수 있습니다. 이 문제를 해결하기 위해 플러그인을 업데이트하여 모든 성공적인 로그인 시 import_pass 커스텀 필드를 지우도록 수정했습니다.

따라서 앞으로는 로그인한 적 없는 사용자만 import_pass 커스텀 필드가 남아 있게 됩니다.

2개의 좋아요