<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

    原帖地址:http://odyssi.blogspot.com/2008/01/intro-to-jboss-seam-security-part-1.html

    Intro to JBoss Seam Security, Part 1 - Authentication

    Recently, I mentioned how I had just started working with the JBoss Seam application framework. The more I have worked with it, the more impressed I have become at how it makes things that are typically difficult using standard Java EE much simpler and more streamlined. One of the areas in which Seam really shines is security. While Java EE defines JAAS for use in securing applications, it is left up to the developer to ingrain this security down to each facet of the application. With Seam, it is easy to define security constraints at all levels of an application, simply through using annotations. In addition, the complexity of authenticating users with JAAS is reduced through Seam's authenticator mechanism. This article will give an introduction to Seam authentication, and show how to write your own custom authenticator.

    Seam's authenticator construct hides the complexity of managing a JAAS configuration, and allows you to implement authentication how you see fit. Perhaps your organization relies on a simple username/password combination for authenticating user accounts in LDAP. Maybe you use a SecureID token, and the accounts are stored in a SQL database. By writing your own authenticator class, or making use of publicly available ones, you can control the way authentication is done in your organization.

    To get started with your own authenticator, you must first declare it in the components.xml file. This file manages much of the configuration for Seam. To add your authenticator, you simply define the class and method that will be used for authentication. For example:

    1. <components xmlns="http://jboss.com/products/seam/components"  
    2.      xmlns:core="http://jboss.com/products/seam/core"  
    3.      xmlns:security="http://jboss.com/products/seam/security"  
    4.      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    5.      xsi:schemaLocation=  
    6.          "http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.0.xsd  
    7.           http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.0.xsd">           
    8.   
    9. <security:identity method="#{authenticator.authenticate}">  
    10.   
    11. </components>  


    You'll notice the #{} syntax used here. This is JBoss' expression language pointing to a class with the instance name of authenticator, where the authenticate method will be used to login a user. Now that we have declared an authenticator to Seam, we're ready to implement it. Our example will be quite simple. If the user enters a username of admin, with a password of password, they will be authenticated successfully. In addition, we will assign them to the role of admin, so that they can perform some sort of administrative function within our application. The implementation of our authenticator would look like this:

    1. @Name("authenticator")  
    2. public class Authenticator {  
    3.   
    4. private static final String valid_user = "admin";  
    5. private static final String valid_password = "password";  
    6.   
    7. public boolean authenticate() {  
    8. String username = Identity.instance().getUsername();  
    9. String password = Identity.instance().getPassword();  
    10.   
    11. if((username.equals(valid_user)) && (password.equals(valid_password))) {  
    12.      return true;  
    13. }  
    14.   
    15. return false;  
    16. }  
    17.   
    18. }  
    Our example is rather trivial. However, it gives a slight glimpse into how Seam authentication works. The first thing that you should notice is the @Name annotation. This annotation prompts Seam to create a bean with the name specified in the annotation. In this case, the name is authenticator, which is how we arrive at the value specified in our components.xml file. Our authenticate method will return true if authentication was successful, and false otherwise.

    So how does the authenticate method get the username and password? This is done via the Identity class. The standard Identity class that comes with Seam is quite extensive, but basically provides support for a username/password combination. It is possible to subclass Identity, however, to support whatever authentication mechanisms you may need. You could implement code to support getting a SecureID token value from a user, or a SPNEGO ticket. All that is needed to make use of the Identity subclass is to add the following annotations to your implementation:

    1. @Name("org.jboss.seam.security.identity")  
    2. @Scope(SESSION)  
    3. @Install(precedence = APPLICATION)  
    4. @BypassInterceptors  
    5. @Startup  
    6. public class MyCustomIdentity extends Identity  
    7. { ... }  

    Your custom Identity subclass is now ready for use.

    Now that we have our authentication classes in place, we are ready to create our login form. This is trivial to create using Seam, particularly because of Seam's use of the JBoss expression language in forms. Our login form fragment would look like the following:

    1. <div>  
    2.    <h:outputlabel for="name" value="Username">  
    3.    <h:inputtext id="name" value="#{identity.username}">  
    4. </div>  
    5.   
    6. <div>  
    7.    <h:outputlabel for="password" value="Password">  
    8.    <h:inputsecret id="password" value="#{identity.password}">  
    9. </div>  
    10.   
    11. <div>  
    12.    <h:commandbutton value="Login" action="#{identity.login}">  
    13. </div>  


    That's all there is to it. You are now ready to authenticate users via your own custom login form and authenticator. While this is an introduction to the simplified form of authentication in Seam, it should give you a good foundation to learn and explore on your own.

    Next time, we will look at how authentication is used throughout an application, not just at the entry point.

    Posted by WhoAmI? at 11:59 AM  

    posted on 2009-04-23 15:36 seal 閱讀(350) 評論(0)  編輯  收藏 所屬分類: Seam
    主站蜘蛛池模板: 日韩电影免费在线观看中文字幕| 亚洲精品无码永久在线观看男男| 免费看又黄又爽又猛的视频软件| 女人18毛片a级毛片免费| 亚洲女人影院想要爱| 114级毛片免费观看| 亚洲毛片基地日韩毛片基地| 88xx成人永久免费观看| 亚洲福利视频网站| 国产h视频在线观看免费| 亚洲一区精品视频在线| 91在线视频免费播放| 亚洲午夜无码久久| 免费国产小视频在线观看| 免费大片av手机看片| 综合亚洲伊人午夜网 | 国产亚洲成人久久| 免费无码H肉动漫在线观看麻豆 | 亚洲欧洲精品视频在线观看| 美女视频黄a视频全免费| 亚洲性无码AV中文字幕| 免费一级肉体全黄毛片| 中文字幕无线码免费人妻| 亚洲免费视频网站| 丁香花免费高清视频完整版| 亚洲AV无码专区在线电影成人| 亚洲精品高清一二区久久| 无码少妇精品一区二区免费动态| 亚洲w码欧洲s码免费| 四虎影视永久免费观看| 爱丫爱丫影院在线观看免费| 亚洲高清视频在线播放| 日本黄色免费观看| 色www永久免费网站| 亚洲人成www在线播放| 亚洲精品无码永久在线观看| 99热这里只有精品免费播放| 亚洲av无码专区在线电影天堂| 亚洲国产精品无码久久久蜜芽| 麻豆最新国产剧情AV原创免费| 日韩亚洲人成在线综合|