知识大全 安全技术 Java与安全性,第2部分一(图)

Posted

篇首语:努力到无能为力,拼搏到感动自己本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 安全技术 Java与安全性,第2部分一(图)相关的知识,希望对你有一定的参考价值。

安全技术 Java与安全性,第2部分一(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  PrivilegedAction    任何实现PrivilegedAction接口的类都封装了一些代码 Java客户端可以在由已填充的Subject定义的安全上下文中运行这些代码 在这种安全上下文下调用已授权动作之前 weblogic security Security runAs( )方法允许客户端把一个Subject与当前线程相关联     示例JAAS客户端    让我们考察一下如何构建一个能够为WebLogic对自身进行身份验证的JAAS客户端 我们将使用从上至下的方法讲述这个例子 从JAAS客户端需要实现的内容开始 然后再细分为其实现的单个组件 让我们从主类SimpleJAASClient开始 采取以下步骤     它从命令行读取用户名 密码和URL作为输入参数   它尝试连接到特定的URL 然后使用所提供的用户名和密码对客户端进行身份验证   它在新获得的已验证对象下执行一个已授权的动作 例 列出了我们的JAAS客户端的源代码   例 列出了我们的JAAS客户端的源代码     例 示例JAAS客户端    package oreilly wlguide security jaas;  import javax security auth Subject;  import javax security auth login LoginContext;  public class SimpleJAASClient   public static void main(String[] args)    String username = args[ ];   String password = args[ ];   String url = args[ ];   LoginContext loginContext = null;   // Create a LoginContext using our own CallBackHander   try      loginContext = new LoginContext( Simple       new SimpleCallbackHandler(username password url));    catch (Exception e)      // Can get a SecurityException or a LoginException     e printStackTrace( );     System exit( );      // Now authenticate If we don t get an exception we succeeded   try      loginContext login( );    catch (Exception e)      // Can get FailedLoginException AccountExpiredException      // or CredentialExpiredException     e printStackTrace( );     System exit( );      // Retrieve authenticated subject and perform action using it   Subject subject = loginContext getSubject( );   SimpleAction simpleAction = new SimpleAction(url);   weblogic security Security runAs(subject simpleAction);      注意我们是如何突出JAAS客户端的重点部分的 我们的第一个关键步骤是建立LoginContext对象     loginContext = new LoginContext( Simple new SimpleCallbackHandler(username password url));  LoginContext对象使用将在JAAS身份验证期间使用的CallBackHandler和LoginModule实例初始化了客户端 构造器带的第二个参数是我们自己的CallBackHandler实例 LoginModule将使用它来获得用户证书 以及将对我们的客户端进行身份验证的WebLogic实例的URL     构造器带的第一个参数是Simple 用于为客户端查找适当的LoginModule JAAS客户端依赖于一个配置文件 该配置文件把JAAS登录模块的名称映射为它们的实现 而且还指定了另外的参数 例 列出了我们使用的JAAS配置文件     例 登录配置文件nfig  Simple   weblogic security auth login UsernamePasswordLoginModule  required  ;  我们的配置文件包含一个Simple入口 在给定用户名和密码的基础上为身份验证指定了WebLogic的LoginModule weblogic security auth login UsernamePasswordLoginModule 当运行JAAS客户端时 必须使用一个系统属性指定该配置文件的位置 下面说明了如何运行我们的示例JAAS客户端     java Djava secnfig=nfig   oreilly wlguide security jaas SimpleJAASClient system pssst t :// :   /    这样 我们就可以配置LoginContext以使用WebLogic的 LoginModule 它支持使用用户名-密码组合的身份验证 稍后 我们将看一看如何使用JAAS配置文件透明地使用LoginModule实现来代替这种方法     建立登录上下文之后 我们调用了loginContext login( )方法来执行实际的登录 我们的LoginContext将利用已配置的登录模块和回调处理对象 并尝试借助服务器对客户端进行身份验证 如果客户端成功通过身份验证 可以从LoginContext获得已验证的主题     Subject subject = loginContext getSubject( );  这个已验证Subject上的getPrincipals( )方法将获得与用户相关的所有主体 例如 如果我们的JAAS客户端使用系统管理员的证书进行身份验证 已验证的Subject将具有两个主体 代表用户的system 和代表用户的组的Administrators 现在 我们可以使用这个主题来执行一个或多个 已授权 的操作 换句话说 这些操作是在这个已验证主题的上下文中执行的     weblogic security Security runAs(subject simpleAction);  这里给出一个忠告——客户端必须调用WebLogic的Security类上的runAs( )方法 runAs( )方法带有两个参数 已验证的Subject和一个PrivilegedAction对象 后者包装了应用程序与服务器的特定交互 例 说明了我们的JAAS客户端希望执行的操作     例 一个非常简单的操作  package oreilly wlguide security jaas;  import java security PrivilegedAction;  import java sql Connection;  import java util Hashtable;  import javax naming Context;  import javax naming InitialContext;  import javax sql DataSource;  public class SimpleAction implements PrivilegedAction   private static final String JNDI_NAME = jdbc xpetstore ;  private String url;  public SimpleAction(String url)    this url = url;    public Object run( )    Object obj = null;   try      Context ctx = null;     Hashtable ht = new Hashtable( );     ht put(Context INITIAL_CONTEXT_FACTORY      weblogic jndi WLInitialContextFactory );     ht put(Context PROVIDER_URL url);     // Get a context for the JNDI lookup     ctx = new InitialContext(ht);     // do any work here     DataSource ds =(javax sql DataSource) ctx lookup(JNDI_NAME);     //     catch (Exception e)      e printStackTrace( );      return obj;      在这里 需要考虑以下重点     类实现 java security PrivilegedAction接口 然后 任何JAAS 客户端都可以在已验证Subject的上下文中调用这个类的一个实例   run( )方法封装了客户端与服务器的交互 通常 客户端将建立一个JNDI上下文 使用它来获取绑定到JNDI树的资源 然后调用/访问这些资源 在前面的例子中 我们使用了JNDI上下文来获得JDBC数据源   当我们在PrivilegedAction run( )方法中建立JNDI上下文时 我们没有为JNDI身份验证提供任何用户证书 JAAS客户端提供已验证的Subject给runAs( )方法 确保PrivilegedAction对象是在这个主题的上下文中调用的 也就是说 runAs( )方法负责把已验证的主题与当前线程关联起来   例 列出了我们的CallBackHandler类的源代码 通常 回调处理程序将与客户端交互 提示用户输入用于身份验证的用户名和密码 在我们的简单JAAS客户端的例子中 我们提供了必需的证书和URL给我们的回调处理程序的构造器 这样回调便可容易地返回这些信息     例 一个简单的回调处理器  package oreilly wlguide security jaas;    import javax security auth callback Callback;  import javax security auth callback CallbackHandler;  import javax security auth callback NameCallback;  import javax security auth callback PasswordCallback;  import javax security auth callback UnsupportedCallbackException;  import weblogic security auth callback URLCallback;    public class SimpleCallbackHandler implements CallbackHandler   private String username = null;  private String password = null;  private String url = null;    public SimpleCallbackHandler(String pUsername String pPassword String pUrl)    username = pUsername; password = pPassword; url = pUrl;      public void handle(Callback[] callbacks)     throws java io IOException UnsupportedCallbackException    for (int i = ; i < callbacks.length; i++)      if (callbacks[i] instanceof NameCa cha138/Article/program/Java/gj/201311/27485

相关参考

知识大全 安全技术 Java与安全性,第1部分一

安全技术Java与安全性,第1部分一  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  WebLog

知识大全 安全技术 Java与安全性,第2部分二

安全技术Java与安全性,第2部分二  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Privil

知识大全 在 WAS 中使用 Java 安全套接字扩展(图)

在WAS中使用Java安全套接字扩展(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文提

知识大全 Java理论与实践: 描绘线程安全性[2]

Java理论与实践:描绘线程安全性[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  线程安全

知识大全 Java容器类的线程安全

Java容器类的线程安全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java容器类的关系图 

知识大全 面向Java开发人员的Scala指南: 构建计算器,第 2 部分

面向Java开发人员的Scala指南:构建计算器,第2部分  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

高压设备倒闸的安全操作基本条件是什么?

  1、有与现场一次设备和实际运行方式相符的一次系统模拟图(包括各种电子接线图)。  2、操作设备应具有明显的标志,包括:命名、编号。分合指示、旋转方向、切换位置的指示及设备相色等。  3、高压电气设

高压设备倒闸的安全操作基本条件是什么?

  1、有与现场一次设备和实际运行方式相符的一次系统模拟图(包括各种电子接线图)。  2、操作设备应具有明显的标志,包括:命名、编号。分合指示、旋转方向、切换位置的指示及设备相色等。  3、高压电气设

知识大全 Java理论与实践: 描绘线程安全性[1]

Java理论与实践:描绘线程安全性[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  定义线程

知识大全 Java开发中的线程安全选择与Swing

Java开发中的线程安全选择与Swing  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Swin