是否有人成功实施了 Google Identity Toolkit ,这是Account Chooser的实现。我按照这里的初始步骤,但我仍然有一些问题,因为我不太清楚如何处理整个数据流。我在后端使用Clojure / Compojure:
A)不太了解ID Provider身份验证的方式,适合我的数据模型
B)有没有办法为开发设置'callbackURL'。
C)GITkit / Account Chooser工作流程如何让我的用户注册一个我的应用程序原生的帐户?
提前致谢
答案 0 :(得分:2)
问题并不完全清楚,但我已经完成了GITkit in ruby的实施,可以给你一些指示。
A)回调URL处理来自身份提供者的断言。 Rightnow GITKit只执行OpenID,因此URL将在查询参数中包含OpenID响应或作为POST正文。你需要做一些事情: 1)在gitkit API中调用verifyAssertion并传递params / post正文。这将返回包含用户详细信息的JSON响应(假设断言有效)。您还应该做一些其他检查 2)决定如何处理断言。如果它是现有用户,则很可能只是建立会话并保存用户ID。如果是新用户,您可以创建新帐户并立即启动会话,或者将其推迟并将其重定向到注册页面。 3)渲染HTML / JS以通知小部件。您可以返回不同的状态代码和数据来更改流程。
GITKit本身并不真正管理会话状态,这取决于您的应用。一些参考实现有代码可以提供帮助,但它不是API的一部分。小部件确实有一些可以用JS控制的状态(添加帐户,显示为已登录等)并在浏览器中使用本地存储。
docs提供了一些细节和示例代码,说明如何实现这一点。
B)当然。当您调用setConfig()时,只在javascript小部件中配置URL。可以将其设置为localhost或任何用于开发的临时服务器。只要您的浏览器可以访问它就可以了。
C)通过“原生”,我认为你的意思是他们只使用用户名/密码注册而不是使用IDP。如果是这样,用户只需在登录时输入他们的电子邮件地址。如果该电子邮件地址与已知IDP匹配,它将尝试使用OpenID进行身份验证,否则如果是新用户,则会重定向到您在其中配置的任何注册页面小部件。该注册页面只会要求用户像往常一样创建密码。您还应该在userStatus检查中返回帐户是否为“遗留”(密码)帐户。
希望有所帮助。
答案 1 :(得分:1)
任何人未来的参考。我能够解决这个问题。您可以按照this thread的说明在Clojure中完成它。
我让它与Ring / Compojure合作,另一位同事向我展示了他在Webnoir中的解决方案。
HTH