This example provides a high-level view of how OpenID authentication can be used within a Play application:
- For each request, check if the user is connected
- If not, display a page where the user can submit his OpenID
- Redirect the user to the OpenID provider
- When the user comes back, get the verified OpenID and save it in the HTTP session.
The OpenID functionality is provided by theplay.libs.OpenIDclass.
@Before(unless={"login", "authenticate"})
static void checkAuthenticated() {
if(!session.contains("user")) {
login();
}
}
public static void index() {
render("Hello %s!", session.get("user"));
}
public static void login() {
render();
}
public static void authenticate(String user) {
if(OpenID.isAuthenticationResponse()) {
UserInfo verifiedUser = OpenID.getVerifiedID();
if(verifiedUser == null) {
flash.error("Oops. Authentication has failed");
login();
}
session.put("user", verifiedUser.id);
index();
} else {
if(!OpenID.id(user).verify()) { // will redirect the user
flash.error("Cannot verify your OpenID");
login();
}
}
}
And thelogin.htmltemplate:
#{if flash.error}
<h1>${flash.error}</h1>
#{/if}
<form action="@{Application.authenticate()}" method="POST">
<label for="user">What’s your OpenID?</label>
<input type="text" name="user" id="user" />
<input type="submit" value="login..." />
</form>
</code>
And finally the routes definitions:
GET / Application.index
GET /login Application.login
* /authenticate Application.authenticate
分享到:
相关推荐
这款库的强大之处在于它支持多种身份验证方法,包括OAuth1、OAuth2、OpenID、CAS、双因素认证(2FA)、时间同步一次性密码(TOTP)、凭据管理以及基本身份验证,同时也允许开发者自定义身份验证策略,以满足不同项目...
OpenID是一种开放标准的身份验证协议,它允许用户在不共享个人信息的情况下,通过第三方服务提供商验证其身份。在Java环境中,JOpenID是一个流行的OpenID客户端库,它为开发者提供了实现OpenID身份验证的便利工具。...
OpenID是一种开放的身份验证...通过学习这些资源,开发者不仅可以理解OpenID的基本工作流程,还能掌握如何在Java环境中使用openid4java库实现OpenID的身份验证服务,从而提升其在身份管理和安全认证方面的专业技能。
3. **防止OpenID钓鱼**:教育用户识别假冒的IdP页面,避免泄露个人信息。 四、OpenID的优势与挑战 1. **优势**:OpenID简化了用户的登录过程,减少了密码管理的负担,同时也降低了网站运营者的账户管理成本。 2. ...
首先,身份识别系统是网络游戏中的核心组件之一。它涉及到玩家的登录验证、账户管理以及安全保护等多个环节。基于网络连接的身份识别,通常采用的是客户端-服务器模式,玩家的设备(客户端)与游戏服务器进行交互,...
4. 生物识别:利用指纹、面部特征等独一无二的身体特征进行身份验证,是最安全的验证方法之一。 四、挑战与解决方案 1. 防止冒用身份:通过加强密码复杂度、使用二次验证和定期更新安全策略来防止盗号。 2. 数据...
基于Python的统一身份认证授权管理系统提供了一种高效、安全的解决方案,它能够支持多种业界标准协议,如LDAP(轻量目录访问协议)、OAuth2、SAML(Security Assertion Markup Language)以及OpenID。这些协议在不同...
Django Rest Framework的OpenID Connect身份验证 该软件包包含一种身份验证机制,用于使用从OpenID Connect获得的令牌对REST API的用户进行身份验证。 当前,它仅支持JWT和Bearer令牌。 JWT令牌将针对OpenID连接...
总之,OpenID认证协议2.0提供了一种安全、方便的方式来管理和验证用户身份,通过OP和RP之间的协作,使得用户可以在多个网站上使用单一身份进行登录。这份中文文档对于中国开发者来说是一份宝贵的资源,可以帮助他们...
4. **响应**:如果身份验证成功,OpenID 提供商会向应用程序发送一个包含身份验证结果的消息。 5. **完成登录**:应用程序根据收到的信息决定是否允许用户登录。 ### 示例代码解析 接下来,我们详细分析提供的代码...
用户只需要注册一个OpenID提供商(通常称为OP),然后可以使用这个提供商的URL作为身份标识,在支持OpenID的网站上进行登录。这样,用户不再需要记住每个网站的用户名和密码,减少了密码管理的复杂性,并降低了因...
Java的OpenID服务器JOIDS(Java OpenID Server)是一个基于Java开发的身份验证解决方案,它实现了OpenID协议,允许用户在不共享个人详细信息的情况下,在不同的网站之间进行身份验证。OpenID是一种分散式身份验证...
Play的SecureSocial 2 SecureSocial允许您向与基于OAuth1,OAuth2和OpenID协议的服务一起使用的应用程序中添加身份验证UI。 SecureSocial提供了Scala和Java API,因此您可以使用首选语言将其集成。 检查项目网站以...
OpenID协议在云计算身份认证中的风险和改进.pdf
OpenID 的主要作用在于简化身份验证过程,减轻用户的记忆负担,并且提高了安全级别,因为用户的登录信息只存储在他们选择的OpenID提供者那里,而不是分散在各个使用OpenID的网站。 3. **OpenID是什么** OpenID ...
微信开发获取openId
总结来说,这个“获取微信openid工具类”是为了解决微信用户身份验证问题,通过静默授权的方式简化了用户操作,提高了用户体验。它涉及到OAuth2.0授权流程、微信接口调用等技术,是微信接入项目中不可或缺的一部分。
plone.app.openid-2.1.0是一个专门针对OpenID身份验证的Python库,它为Plone内容管理系统提供集成OpenID身份验证的支持。本文将深入探讨这个库的细节,以及它如何在实际开发中发挥作用。 首先,OpenID是一种开放的...