对于多个应用程序,我想构建一个集中式帐户解决方案。核心由一些 ASP.NET 核心 Web 应用程序组成。但我也想包括第三方应用程序,如WordPress,GitLab或XAMPP/HipChat服务器。我的目标:用户创建一个帐户,该帐户可用于所有这些应用程序。因此,LDAP服务器似乎是最好的方法,因为许多应用程序都支持此协议。这也为以后可能会添加的其他应用程序提供了灵活性。
这里的问题是,用户应该能够使用常见的社交网站进行身份验证 - 尤其是Facebook。这是最先进的,可以提高对话率,因为它对用户来说更容易。
是否可以将Facebook等社交登录提供商集成到ApacheDS等LDAP服务器?
正如我所看到的主题,Facebook生成某种身份验证令牌,可以从应用程序中使用它来验证用户的身份。在我的自定义 Web 应用程序中,这没有问题。但是对于例如XAMPP服务器,这似乎不起作用:LDAP需要用户名/密码。但我没有这个,因为只有一个Facebook令牌可用。LDAP 服务器可以将其存储在属性中。但是,这需要检查此令牌,而不是 LDAP 绑定上的密码。
另一方面,当我放弃LDAP服务器并使用一些框架(如 ASP.NET 核心身份)时,这没什么大不了的。这里的问题是:我无法将此登录名用于第三方应用程序。这将要求用户有一个额外的帐户,例如XAMPP,WordPress等,这会导致大混乱,因此不适合我。
通过放弃社会支持,它起作用了。这似乎也不是一个好主意,因为这些登录是最先进的,我的目标是年轻用户,他们希望与Facebook或类似提供商一起提供SSO解决方案。
Facebook(和其他社交登录网站)使用名为OAuth的协议进行身份验证。最简单的解决方案可能是自己实现一个OAuth服务器,该服务器使用LDAP作为后端,然后将其添加到Facebook登录下方作为第二种登录方式。
这不会将通过Facebook登录的用户添加到您的LDAP,但由于您通常只能获得OAuth令牌以进行登录(不一定是用户名),需要根据Facebook(或提供该令牌的人)进行验证,因此将其用作"密码替换"是行不通的。