Connecting to OpenID services

    • 用户给你他的 OpenID(一个 URL)。
    • 用户在他的 OpenID 提供方那确认授权,然后重定向回你的服务器。
    • 你的服务器收到重定向返回的信息,并与 OpenID 提供方检查信息是否正确。

    如果你的用户使用的都是同一个 OpenID 提供方,那么可以忽略第一步(例如你决定全部都使用 Google 账号来登录)。

    使用 OpenID,首先需要把 库添加到你的 build.sbt 文件中:

    • OpenID.verifiedId 需要一个隐式的 Request,并且检查它来建立用户的信息,包含他验证过的 OpenID。它会异步地请求一下 OpenID 服务器以确认信息的真实性,这也是为什么它返回的是一个 Future[UserInfo]。如果信息不正确或者服务器的检查结果不正确(例如重定向 URL 是伪造的),返回的 就会失败。

    如果 Future 失败,你可以定义一个回退将用户重定向回登录页面或者返回 BadRequest

    下面请看一个用例:

    你可以从 OpenID 服务器请求一些可选属性或必需属性。要求提供某些必需属性意味着如果用户没有提供的话,他将无法登录你的服务。

    你在重定向 URL 中请求扩展属性: