## org.jboss.security
Class SecurityAssociation

    java.lang.Object
      |
      +--org.jboss.security.SecurityAssociation

public final class SecurityAssociation
extends java.lang.Object

The SecurityAssociation class maintains the security principal and credentials. This can be done on either a singleton basis or a thread local basis depending on the server property. When the server property has been set to true, the security information is maintained in thread local storage. The type of thread local storage depends on the org.jboss.security.SecurityAssociation.ThreadLocal property. If this property is true, then the thread local storage object is of type java.lang.ThreadLocal which results in the current thread's security information NOT being propagated to child threads. When the property is false or does not exist, the thread local storage object is of type java.lang.InheritableThreadLocal, and any threads spawned by the current thread will inherit the security information of the current thread. Subseqent changes to the current thread's security information are NOT propagated to any previously spawned child threads. When the server property is false, security information is maintained in class variables which makes the information available to all threads within the current VM.

Version:
  $Revision: 1.4.2.3 $
Author:
  Daniel O'Connor (docodan@nycap.rr.com), Scott.Stark@jboss.org

Constructor Summary
`SecurityAssociation()`

Method Summary
`static void` `clear()` Clear all principal information.
`static java.lang.Object` `getCredential()` Get the current principal credential information.
`static java.security.Principal` `getPrincipal()` Get the current principal information.
`static javax.security.auth.Subject` `getSubject()` Get the current Subject information.
`static java.security.Principal` `peekRunAsRole()` Look at the current thread of control's run-as principal role.
`static java.security.Principal` `popRunAsRole()` Pop the current thread of control's run-as principal role.
`static void` `pushRunAsRole(java.security.Principal runAsRole)` Push the current thread of control's run-as principal role.
`static void` `setCredential(java.lang.Object credential)` Set the current principal credential information.
`static void` `setPrincipal(java.security.Principal principal)` Set the current principal information.
`static void` `setServer()` Set the server mode of operation.
`static void` `setSubject(javax.security.auth.Subject subject)` Set the current Subject information.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SecurityAssociation

    public SecurityAssociation()

Method Detail

### getPrincipal

    public static java.security.Principal getPrincipal()

  Get the current principal information. If a security manager is present, then this method calls the security manager's `checkPermission` method with a `RuntimePermission("org.jboss.security.SecurityAssociation.getPrincipalInfo")` permission to ensure it's ok to access principal information. If not, a `SecurityException` will be thrown.
  Returns:
    Principal, the current principal identity.

### getCredential

    public static java.lang.Object getCredential()

  Get the current principal credential information. This can be of any type including: a String password, a char[] password, an X509 cert, etc. If a security manager is present, then this method calls the security manager's `checkPermission` method with a `RuntimePermission("org.jboss.security.SecurityAssociation.getPrincipalInfo")` permission to ensure it's ok to access principal information. If not, a `SecurityException` will be thrown.
  Returns:
    Object, the credential that proves the principal identity.

### getSubject

    public static javax.security.auth.Subject getSubject()

  Get the current Subject information. If a security manager is present, then this method calls the security manager's `checkPermission` method with a `RuntimePermission("org.jboss.security.SecurityAssociation.getPrincipalInfo")` permission to ensure it's ok to access principal information. If not, a `SecurityException` will be thrown.
  Returns:
    Subject, the current Subject identity.

### setPrincipal

    public static void setPrincipal(java.security.Principal principal)

  Set the current principal information. If a security manager is present, then this method calls the security manager's `checkPermission` method with a `RuntimePermission("org.jboss.security.SecurityAssociation.setPrincipalInfo")` permission to ensure it's ok to access principal information. If not, a `SecurityException` will be thrown.
  Parameters:
    `principal,` - the current principal identity.

### setCredential

    public static void setCredential(java.lang.Object credential)

  Set the current principal credential information. This can be of any type including: a String password, a char[] password, an X509 cert, etc. If a security manager is present, then this method calls the security manager's `checkPermission` method with a `RuntimePermission("org.jboss.security.SecurityAssociation.setPrincipalInfo")` permission to ensure it's ok to access principal information. If not, a `SecurityException` will be thrown.
  Parameters:
    `credential,` - the credential that proves the principal identity.

### setSubject

    public static void setSubject(javax.security.auth.Subject subject)

  Set the current Subject information. If a security manager is present, then this method calls the security manager's `checkPermission` method with a `RuntimePermission("org.jboss.security.SecurityAssociation.setPrincipalInfo")` permission to ensure it's ok to access principal information. If not, a `SecurityException` will be thrown.
  Parameters:
    `principal,` - the current principal identity.

### clear

    public static void clear()

  Clear all principal information. If a security manager is present, then this method calls the security manager's `checkPermission` method with a `RuntimePermission("org.jboss.security.SecurityAssociation.setPrincipalInfo")` permission to ensure it's ok to access principal information. If not, a `SecurityException` will be thrown.
  Parameters:
    `principal,` - the current principal identity.

### pushRunAsRole

    public static void pushRunAsRole(java.security.Principal runAsRole)

  Push the current thread of control's run-as principal role.

### popRunAsRole

    public static java.security.Principal popRunAsRole()

  Pop the current thread of control's run-as principal role.

### peekRunAsRole

    public static java.security.Principal peekRunAsRole()

  Look at the current thread of control's run-as principal role.

### setServer

    public static void setServer()

  Set the server mode of operation. When the server property has been set to true, the security information is maintained in thread local storage. This should be called to enable property security semantics in any multi-threaded environment where more than one thread requires that security information be restricted to the thread's flow of control. If a security manager is present, then this method calls the security manager's `checkPermission` method with a `RuntimePermission("org.jboss.security.SecurityAssociation.setServer")` permission to ensure it's ok to access principal information. If not, a `SecurityException` will be thrown.

Copyright © 2000 The JBoss Organization. All Rights Reserved.