在 JBoss AS 7 上设置 Seam3-Security 已翻译 100%

oschina 投递于 2013/06/15 21:56 (共 2 段, 翻译完成于 06-17)
阅读 1593
收藏 14
1
加载中

最近,我对几个Java 安全框架做了一些研究,它们能实现认证、授权和加密技术。

我曾经为Apache Shiro贡献代码,它十分的棒。但是,我发现几个问题,比如没有默认执行的CDI安全注释拦截器。下面是一个我之前的执行和启动步骤。

很久以前,我用的是seam2-security,现在用seam3。下面开始:

蒋锴
蒋锴
翻译于 2013/06/17 08:17
1
  1. 开始,我从JBoss Maven模型创建了一个JavaEE6项目,
  2. 在你主项目中的Maven引用关系管理器中,添加:
    <dependency>
     <groupId>org.jboss.seam</groupId>
     <artifactId>seam-bom</artifactId>
     <version>3.1.0.Final</version>
     <scope>import</scope>
     <type>pom</type>
    </dependency>
    这可以确保我在整个项目中使用的seam-jar版本正确。
  3. 然后,在ejb项目中的引用关系管理器中,添加seam3-security的引用:
    <dependency>
     <groupId>org.jboss.seam.security</groupId>
     <artifactId>seam-security</artifactId>
     <scope>compile</scope>
    </dependency>
  4. 在Web项目中的WEB-INF文件夹中,新建一个beans.xml文件。这个文件也是CDI正常工作所必需的。这里,我们定义拦截机制:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:s="urn:java:ee" xmlns:security="
     urn:java:org.jboss.seam.security"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     http://jboss.org/schema/cdi/beans_1_0.xsd">
    
     <interceptors>
      <class>org.jboss.seam.security.SecurityInterceptor</class>
     </interceptors>
    
     <security:IdentityImpl>
      <s:modifies />
      <security:authenticatorClass>com.czetsuya.security.Authenticator
      </security:authenticatorClass>
     </security:IdentityImpl>
    
    </beans>
  5. 之后,我们要定义拦截类:
    package com.czetsuya.security;
    
    import javax.enterprise.inject.Model;
    import javax.inject.Inject;
    
    import org.jboss.seam.security.BaseAuthenticator;
    import org.jboss.seam.security.Credentials;
    import org.picketlink.idm.impl.api.PasswordCredential;
    import org.picketlink.idm.impl.api.model.SimpleUser;
    
    @Model
    public class Authenticator extends BaseAuthenticator {
     @Inject
     Credentials credentials;
    
     public Authenticator() {
    
     }
    
     @Override
     public void authenticate() {
      System.out.println("logging in: " + credentials.getUsername());
    
      if ("demo".equals(credentials.getUsername())
        && credentials.getCredential() instanceof PasswordCredential
        && "demo".equals
        (((PasswordCredential) credentials.getCredential()).getValue())) {
    
       setStatus(AuthenticationStatus.SUCCESS);
       setUser(new SimpleUser("demo"));
    
      }
    
     }
    
    }
  6. 要隐藏UI中的一个组件,你可以使用identity.hasPermissionoridentity.hasRole.
  7. 你可以从 Google code下载源代码。
尚御博豪
尚御博豪
翻译于 2013/06/17 09:17
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(5)

ddatsh
ddatsh
apache shiro
hantsy
hantsy
还是关注 Apache DeltaSpike 吧,,,包括了 Securtiy。
Seam 3 Security 在几个项目使用了,对 JPA支持不错。LDAP 就是要费点力,可能使用 JBoss PicketBox 好点。
Beyond-Bit
Beyond-Bit
文对题嘛?两次看到关于spring security 3 的文章上首页了,可是每次都是这样的结局!哎~~~实在是~~~~
iehyou
iehyou
翻译了一半吧
hantsy
hantsy
呵呵,,,首页写的 Spring Security啊?
返回顶部
顶部