`

play framework学习笔记之 身份识别,openID

阅读更多

A simple OpenID authentication example

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
分享到:
评论

相关推荐

    play-silhouette:Silhouette是用于Play Framework应用程序的身份验证库,它支持几种身份验证方法,包括OAuth1,OAuth2,OpenID,CAS,2FA,TOTP,凭据,基本身份验证或自定义身份验证方案

    这款库的强大之处在于它支持多种身份验证方法,包括OAuth1、OAuth2、OpenID、CAS、双因素认证(2FA)、时间同步一次性密码(TOTP)、凭据管理以及基本身份验证,同时也允许开发者自定义身份验证策略,以满足不同项目...

    OpenID的Java客户端 JOpenID_OpenID_java_

    OpenID是一种开放标准的身份验证协议,它允许用户在不共享个人信息的情况下,通过第三方服务提供商验证其身份。在Java环境中,JOpenID是一个流行的OpenID客户端库,它为开发者提供了实现OpenID身份验证的便利工具。...

    openid资料大全

    OpenID是一种开放的身份验证...通过学习这些资源,开发者不仅可以理解OpenID的基本工作流程,还能掌握如何在Java环境中使用openid4java库实现OpenID的身份验证服务,从而提升其在身份管理和安全认证方面的专业技能。

    OpenID教程 项目集成

    3. **防止OpenID钓鱼**:教育用户识别假冒的IdP页面,避免泄露个人信息。 四、OpenID的优势与挑战 1. **优势**:OpenID简化了用户的登录过程,减少了密码管理的负担,同时也降低了网站运营者的账户管理成本。 2. ...

    网络游戏-基于网络连接的身份识别系统及方法.zip

    首先,身份识别系统是网络游戏中的核心组件之一。它涉及到玩家的登录验证、账户管理以及安全保护等多个环节。基于网络连接的身份识别,通常采用的是客户端-服务器模式,玩家的设备(客户端)与游戏服务器进行交互,...

    网络游戏-基于计算机网络的身份识别系统.zip

    4. 生物识别:利用指纹、面部特征等独一无二的身体特征进行身份验证,是最安全的验证方法之一。 四、挑战与解决方案 1. 防止冒用身份:通过加强密码复杂度、使用二次验证和定期更新安全策略来防止盗号。 2. 数据...

    基于python的统一身份认证授权管理解决方案,支持多种标准协议(LDAP, OAuth2, SAML, OpenID)

    基于Python的统一身份认证授权管理系统提供了一种高效、安全的解决方案,它能够支持多种业界标准协议,如LDAP(轻量目录访问协议)、OAuth2、SAML(Security Assertion Markup Language)以及OpenID。这些协议在不同...

    drf-oidc-auth:Django REST框架的OpenID Connect身份验证

    Django Rest Framework的OpenID Connect身份验证 该软件包包含一种身份验证机制,用于使用从OpenID Connect获得的令牌对REST API的用户进行身份验证。 当前,它仅支持JWT和Bearer令牌。 JWT令牌将针对OpenID连接...

    OpenID中文文档

    总之,OpenID认证协议2.0提供了一种安全、方便的方式来管理和验证用户身份,通过OP和RP之间的协作,使得用户可以在多个网站上使用单一身份进行登录。这份中文文档对于中国开发者来说是一份宝贵的资源,可以帮助他们...

    openID sample server

    4. **响应**:如果身份验证成功,OpenID 提供商会向应用程序发送一个包含身份验证结果的消息。 5. **完成登录**:应用程序根据收到的信息决定是否允许用户登录。 ### 示例代码解析 接下来,我们详细分析提供的代码...

    php-openid-2.1.3

    用户只需要注册一个OpenID提供商(通常称为OP),然后可以使用这个提供商的URL作为身份标识,在支持OpenID的网站上进行登录。这样,用户不再需要记住每个网站的用户名和密码,减少了密码管理的复杂性,并降低了因...

    Java的OpenID服务器 JOIDS

    Java的OpenID服务器JOIDS(Java OpenID Server)是一个基于Java开发的身份验证解决方案,它实现了OpenID协议,允许用户在不共享个人详细信息的情况下,在不同的网站之间进行身份验证。OpenID是一种分散式身份验证...

    securesocial:一种模块,为Play Framework应用程序提供OAuth,OAuth2和OpenID身份验证

    Play的SecureSocial 2 SecureSocial允许您向与基于OAuth1,OAuth2和OpenID协议的服务一起使用的应用程序中添加身份验证UI。 SecureSocial提供了Scala和Java API,因此您可以使用首选语言将其集成。 检查项目网站以...

    OpenID协议在云计算身份认证中的风险和改进.pdf

    OpenID协议在云计算身份认证中的风险和改进.pdf

    OpenID简介及与struts2_spring_hibernate框架集成

    OpenID 的主要作用在于简化身份验证过程,减轻用户的记忆负担,并且提高了安全级别,因为用户的登录信息只存储在他们选择的OpenID提供者那里,而不是分散在各个使用OpenID的网站。 3. **OpenID是什么** OpenID ...

    java微信获取OpenId

    微信开发获取openId

    获取微信openid工具类

    总结来说,这个“获取微信openid工具类”是为了解决微信用户身份验证问题,通过静默授权的方式简化了用户操作,提高了用户体验。它涉及到OAuth2.0授权流程、微信接口调用等技术,是微信接入项目中不可或缺的一部分。

    Python库 | plone.app.openid-2.1.0.zip

    plone.app.openid-2.1.0是一个专门针对OpenID身份验证的Python库,它为Plone内容管理系统提供集成OpenID身份验证的支持。本文将深入探讨这个库的细节,以及它如何在实际开发中发挥作用。 首先,OpenID是一种开放的...

Global site tag (gtag.js) - Google Analytics