知识大全 安全技术 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部分一 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! WebLog
安全技术Java与安全性,第2部分二 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Privil
知识大全 在 WAS 中使用 Java 安全套接字扩展(图)
在WAS中使用Java安全套接字扩展(图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文提
Java理论与实践:描绘线程安全性[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 线程安全
Java容器类的线程安全 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java容器类的关系图
知识大全 面向Java开发人员的Scala指南: 构建计算器,第 2 部分
面向Java开发人员的Scala指南:构建计算器,第2部分 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
1、有与现场一次设备和实际运行方式相符的一次系统模拟图(包括各种电子接线图)。 2、操作设备应具有明显的标志,包括:命名、编号。分合指示、旋转方向、切换位置的指示及设备相色等。 3、高压电气设
1、有与现场一次设备和实际运行方式相符的一次系统模拟图(包括各种电子接线图)。 2、操作设备应具有明显的标志,包括:命名、编号。分合指示、旋转方向、切换位置的指示及设备相色等。 3、高压电气设
Java理论与实践:描绘线程安全性[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 定义线程
Java开发中的线程安全选择与Swing 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Swin