# 在已有大量用户注册后添加SSO -- 如何迁移他们？

**URL:** <https://meta.discourse.org/t/adding-sso-after-many-users-already-signed-up-how-to-migrate-them/232240>\
**Category:** SSO\
**Created:** [2022 年7 月 7 日 19:53 UTC](https://meta.discourse.org/t/adding-sso-after-many-users-already-signed-up-how-to-migrate-them/232240 "2022-07-07T19:53:40Z")\
**Posts on this page:** 1\
**Showing post:** 15

<div class="post-metadata">

作者： ![EGreg](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/egreg/32/133614_2.png) [@EGreg](https://meta.discourse.org/u/EGreg)\
发布日期： [2022 年9 月 11 日 19:42 UTC](https://meta.discourse.org/t/adding-sso-after-many-users-already-signed-up-how-to-migrate-them/232240/15 "2022-09-11T19:42:28Z")

</div>

是的！我成功创建了一个脚本，可以遍历所有 Discourse 用户，并将他们及其密码哈希导入到我们的平台。

很快，我们就能让任何拥有 Discourse 论坛的人在“讨论”标签中添加活动、视频会议、媒体等功能，并使用 Discourse。您可以在 [https://intercoin.app](https://intercoin.app) 上看到成果。

基本上，这会将任何 Discourse 安装变成一个类似 Facebook 的现代社交网络。我们为此功能投入了多年的努力，现在我们希望将其与 Discourse 和 WordPress 紧密集成。这样，人们就可以结合使用 WordPress、Discourse 和 Qbix，并自行托管他们的整个社区。

 ![image](https://global.discourse-cdn.com/meta/original/4X/7/2/3/7233b57d2ba3664a2ae53ebe26093642c285981b.jpeg)

但我还有两个遗留问题。

1. 在 Qbix 中，我们至少使用 sha1(password + userId) 在客户端对密码进行哈希处理，然后再将其发送到服务器。即使是 HTTPS。我们这样做是为了让服务器或任何中间人（MITM）永远无法获得密码，以便在多个站点上重复使用。但是，Discourse 只会将密码发送到服务器。因此，我们不得不关闭客户端的这种哈希处理。是否可以在客户端进行一些 hash\_pbkdf2 迭代，其余部分在服务器端进行？我尝试过，但似乎不匹配：

```php
php > $password = 'abc';
php > $salt = 'def';
php > $a = hash_pbkdf2('sha256', $password, $salt, 64000, 64, false);
php > $b = hash_pbkdf2('sha256', $password, $salt, 1, 64, false);
php > $c = hash_pbkdf2('sha256', $password, $b, 63999, 64, false);
php > echo $a;
9d7a21ae4113bea06d81e0c486f45ab778bb739f19f7a6a305d8401918a9d8a1
php > echo $c;
f42af6861ebcf8560b027276e0d02ad46502636045486057d81be7c4c4aa630e

```

1. 是否可以直接使用 Discourse 作为 SSO 提供商，而不是使用我们的网站作为 SSO 提供商？这样，Discourse 论坛的托管者就更有可能用 Qbix 功能来扩展它，因为登录将保持完全相同，并且在 Discourse 端。Facebook、Google 以及其他任何服务。是否有关于 [Discourse Connect](https://meta.discourse.org/t/13045?silent=true) 作为 SSO 提供商向我们的消费者网站返回哪些信息的文档？它是否至少包含我们可以下载的照片、名字、姓氏和用户名等信息？

---

_[View the full topic](https://meta.discourse.org/t/adding-sso-after-many-users-already-signed-up-how-to-migrate-them/232240)._
