「java安全包」java安全框架有哪些
今天给各位分享java安全包的知识,其中也会对java安全框架有哪些进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java.security包的jar包叫什么
\jdk1.6.0 -- JDK的根目录,包含一些软件版权,声明,和自述文件,
同时包含归档了的Java平台源代码包src.zip
\jdk1.6.0\bin -- JDK包含的一些开发工具执行文件
\jdk1.6.0\jre\bin\client
包含 Java HotSpotTM Client Virtual Machine 要用的 DLL 文件
\jdk1.6.0\jre\bin\server
包含 Java HotSpotTM Server Virtual Machine 要用的 DLL 文件
\jdk1.6.0\lib -- Java开发工具要用的一些库文件,有包含了支持JDK工具的非核心类库tool.jar,
dt.jar 归档的 BeanInfo 文件
用于告诉IDE这样显示java组件怎样让开发者在自己的应用程序中用户化它们
\jdk1.6.0\jre -- JDK使用的Java运行环境(JRE)的根目录,这个运行环境实现了Java平台
\jdk1.6.0\jre\bin -- Java平台所要用的工具和库的可执行文件
这些可执行文件和 /jdk1.6.0/bin相同的。
//Java 启动器工具充当了应用程序启动器(覆盖了1.1版本的JDK推出的旧版本JRE工具)
这个路径不需要设置 PATH 环境变量
\jdk1.6.0\jre\bin\client -- 包含Java Hotspot(Java性能引擎) 客户虚拟机要用的DLL文件
\jdk1.6.0\jre\bin\server -- 包含Java Hotspot(Java性能引擎) 服务器虚拟机要用的DLL文件
\jdk1.6.0\jre\lib -- JRE要用的代码库,属性设置,资源文件。
例如rt.jar Java 引导类库(java 核心APIRunTime类)
charsets.jar 字符转换类库
\jdk1.6.0\jre\lib\ext -- 默认的Java平台扩展安装环境
包含localedata.jar 是 ava.text 和 java.util包要用到的地区数据
\jdk1.6.0\jre\lib\security -- 包含安全管理文件,有安全规则(java.policy)
和安全属性文件(java.security)
\jdk1.6.0\jre\lib\applet -- Java applets 要的Jar包,可以放到lib/applet/目录,
这样可以节省 applet 类装载器从本地文件系统装载 大的applets 所需的applet类时间
减少从网上下载具有相同的保护的时间。
\jdk1.6.0\jre\lib\fonts 包含平台所需的TrueType字体文件
Java安全开发包在web中有哪些应用
Java安全开发包在web中的应用场景有
SecurityManager在Java中被用来检查应用程序是否能访问一些有限的资源,例如文件、套接字(socket)等等。它可以用在那些具有高安全性要求的应用程序中。通过打开这个功能, 我们的系统资源可以只允许进行安全的操作。
当Java虚拟机启动时,它首先通过检查系统属性java.security.manager来确定SecurityManager是否打开了。如果打开了,那么SecurityManager实例将被创建,它可以被用来检查不同的权限。默认情况下,SecurityManager是关闭的,但是这里有一些方法可以打开SecurityManager。
1. 指定 -Djava.security.manager
当我们运行一个程序,我们可以指定JVM命令 -Djava.security.manager 使SecurityManager运行。
1
java -Djava.security.manager
这是打开SecurityManager最常见的方式。java.security.manager是一个系统属性,您可以使用System.getProperty(“java.security.manager”)检查该系统属性是否被设置。
在这里,你可能会认为,我们可以使用System.setProperty(“java.security.manager”)打开SecurityManager,但是并不能这么设置。因为先前我们提到,这个系统属性是在当JVM启动时进行检查的。如果我们用程序手动设置该属性,并不能奏效,因为JVM已经启动了,已经过了检查系统属性的步骤了。
2. 通过程序打开SecurityManager
现在,如果我们真的想通过我们的程序打开SecurityManager,我们也能做到。 System类中有一个叫 setSecurityManager() 的方法可以做到这一点。这个方法的参数是一个SecurityManager实例。
1
2
SecurityManager sm=new SecurityManager();
System.setSecurityManager(sm);
通过这个,我们可以打开SecurityManager.。如果之后我们想要关闭SecurityManager, 我们该怎么做? 下面的代码能做到吗?
1
2
3
4
SecurityManager sm=System.getSecurityManager();
if(sm!=null){
System.setSecurityManager(null);
}
上面的代码只有你在位于${JAVA_HOME}/lib/security目录下或者其他指定目录下的java.policy文件中指定了一个权限才会奏效。 这个权限是:
1
permission java.lang.RuntimePermission "setSecurityManager";
上面的一行将被用来允许代码设置SecurityManager
3. 在build文件中
我们想打开SecurityManager,如果我们使用Ant构建应用程序时, 我们可以加上
1
我们通过Ant创建单元测试的时候非常有用。
什么是JAAS,以及灵活的Java安全
Java Authentication Authorization Service(JAAS,Java验证和授权API)提供了灵活和可伸缩的机制来保证客户端或服务器端的Java程序。Java早期的安全框架强调的是通过验证代码的来源和作者,保护用户避免受到下载下来的代码的攻击。JAAS强调的是通过验证谁在运行代码以及他/她的权限来保护系统面受用户的攻击。它让你能够将一些标准的安全机制,例如Solaris NIS(网络信息服务)、Windows NT、LDAP(轻量目录存取协议),Kerberos等通过一种通用的,可配置的方式集成到系统中。
你是否曾经需要为一个应用程序实现登录模块呢?如果你是一个比较有经验的程序员,相信你这样的工作做过很多次,而且每次都不完全一样。你有可能把你的登录模块建立在Oracle数据库的基础上,也有可能使用的是NT的用户验证,或者使用的是LDAP目录。如果有一种方法可以在不改变应用程序级的代码的基础上支持上面提到的所有这一些安全机制,对于程序员来说一定是一件幸运的事。
现在你可以使用JAAS实现上面的目标。JAAS是一个比较新的的Java API。在J2SE 1.3中,它是一个扩展包;在J2SE 1.4中变成了一个核心包。在本文中,我们将介绍JAAS的一些核心概念,然后通过例子说明如何将JAAS应用到实际的程序中。本文的例子是根据我们一个基于Web的Java应用程序进行改编的,在这个例子中,我们使用了关系数据库保存用户的登录信息。由于使用了JAAS,我们实现了一个健壮而灵活的登录和身份验证模块。
客户端和服务器端的JAAS
开发人员可以将JAAS应用到客户端和服务器端。在客户端使用JAAS很简单。在服务器端使用JAAS时情况要复杂一些。目前在应用服务器市场中的JAAS产品还不是很一致,使用JAAS的J2EE应用服务器有一些细微的差别。例如JBossSx使用自己的结构,将JAAS集成到了一个更大的安全框架中;而虽然WebLogic 6.x也使用了JAAS,安全框架却完全不一样。
现在你能够理解为什么我们需要从客户端和服务器端的角度来看JAAS了。我们将在后面列出两种情况下的例子。为了使服务器端的例子程序更加简单,我们使用了Resin应用服务器。
核心JAAS类
在使用JAAS之前,你首先需要安装JAAS。在J2SE 1.4中已经包括了JAAS,但是在J2SE 1.3中没有。如果你希望使用J2SE 1.3,你可以从SUN的官方站点上下载JAAS。当正确安装了JAAS后,你会在安装目录的lib目录下找到jaas.jar。你需要将该路径加入Classpath中。(注:如果你安装了应用服务器,其中就已经包括了JAAS,请阅读应用服务器的帮助文档以获得更详细的信息)。在Java安全属性文件java.security中,你可以改变一些与JAAS相关的系统属性。该文件保存在/lib/security目录中。
在应用程序中使用JAAS验证通常会涉及到以下几个步骤:
1. 创建一个LoginContext的实例。
2. 为了能够获得和处理验证信息,将一个CallBackHandler对象作为参数传送给LoginContext。
3. 通过调用LoginContext的login()方法来进行验证。
4. 通过使用login()方法返回的Subject对象实现一些特殊的功能(假设登录成功)。
下面是一个简单的例子:
LoginContext lc = new LoginContext("MyExample");
try {
lc.login();
} catch (LoginException) {
// Authentication failed.
}
// Authentication successful, we can now continue.
// We can use the returned Subject if we like.
Subject sub = lc.getSubject();
Subject.doAs(sub, new MyPrivilegedAction());
在运行这段代码时,后台进行了以下的工作。
1. 当初始化时,LoginContext对象首先在JAAS配置文件中找到MyExample项,然后更具该项的内容决定该加载哪个LoginModule对象。
2. 在登录时,LoginContext对象调用每个LoginModule对象的login()方法。
3. 每个login()方法进行验证操作或获得一个CallbackHandle对象。
4. CallbackHandle对象通过使用一个或多个CallBack方法同用户进行交互,获得用户输入。
5. 向一个新的Subject对象中填入验证信息。
我们将对代码作进一步的解释。但是在这之前,让我们先看代码中涉及到的核心JAAS类和接口。这些类可以被分为三种类型:
普通类型 Subject,Principal,凭证
验证 LoginContext,LoginModule,CallBackHandler,Callback
授权 Policy,AuthPermission,PrivateCredentialPermission
上面列举的类和接口大多数都在javax.security.auth包中。在J2SE 1.4中,还有一些接口的实现类在com.sun.security.auth包中。
普通类型:Subject,Principal,凭证 Subject类代表了一个验证实体,它可以是用户、管理员、Web服务,设备或者其他的过程。该类包含了三中类型的安全信息: 身份(Identities):由一个或多个Principal对象表示 公共凭证(Public credentials):例如名称或公共秘钥 私有凭证(Private credentials):例如口令或私有密钥 Principal对象代表了Subject对象的身份。它们实现了java.security.Principal和java.io.Serializable接口。在Subject类中,最重要的方法是getName()。该方法返回一个身份名称。在Subject对象中包含了多个Principal对象,因此它可以拥有多个名称。由于登录名称、身份证号和Email地址都可以作为用户的身份标识,可见拥有多个身份名称的情况在实际应用中是非常普遍的情况。 在上面提到的凭证并不是一个特定的类或借口,它可以是任何对象。凭证中可以包含任何特定安全系统需要的验证信息,例如标签(ticket),密钥或口令。Subject对象中维护着一组特定的私有和公有的凭证,这些凭证可以通过getPrivateCredentials()和getPublicCredentials()方法获得。这些方法通常在应用程序层中的安全子系统被调用。 验证:LoginContext 在应用程序层中,你可以使用LoginContext对象来验证Subject对象。LoginContext对象同时体现了JAAS的动态可插入性(Dynamic Pluggability),因为当你创建一个LoginContext的实例时,你需要指定一个配置。LoginContext通常从一个文本文件中加载配置信息,这些配置信息告诉LoginContext对象在登录时使用哪一个LoginModule对象。 下面列出了在LoginContext中经常使用的三个方法: login () 进行登录操作。该方法激活了配置中制定的所有LoginModule对象。如果成功,它将创建一个经过了验证的Subject对象;否则抛出LoginException异常。 getSubject () 返回经过验证的Subject对象 logout () 注销Subject对象,删除与之相关的Principal对象和凭证 验证:LoginModule LoginModule是调用特定验证机制的接口。J2EE 1.4中包含了下面几种LoginModule的实现类: JndiLoginModule 用于验证在JNDI中配置的目录服务 Krb5LoginModule 使用Kerberos协议进行验证 NTLoginModul 使用当前用户在NT中的用户信息进行验证 UnixLoginModule 使用当前用户在Unix中的用户信息进行验证 同上面这些模块绑定在一起的还有对应的Principal接口的实现类,例如NTDomainPrincipal和UnixPrincipal。这些类在com.sun.security.auth包中。 LoginModule接口中包含了五个方法: initialize () 当创建一LoginModule实例时会被构造函数调用 login () 进行验证 commit () 当LgoninContext对象接受所有LoginModule对象传回的结果后将调用该方法。该方法将Principal对象和凭证赋给Subject对象。 abort () 当任何一个LoginModule对象验证失败时都会调用该方法。此时没有任何Principal对象或凭证关联到Subject对象上。 logout () 删除与Subject对象关联的Principal对象和凭证。 在应用程序的代码中,程序员通常不会直接调用上面列出的方法,而是通过LigonContext间接调用这些方法。 验证:CallbackHandler和Callback CallbackHandler和Callback对象可以使LoginModule对象从系统和用户那里收集必要的验证信息,同时独立于实际的收集信息时发生的交互过程。 JAAS在javax.sevurity.auth.callback包中包含了七个Callback的实现类和两个CallbackHandler的实现类: ChoiceCallback、ConfirmationCallback、LogcaleCallback、NameCallback、PasswordCallback、TextInputCallback、TextOutputCallback、DialogCallbackHandler和TextCallBackHandler。Callback接口只会在客户端会被使用到。
java的API中有哪些常用的包?
Application Programming Interface 应用程序编程接口,Java的api就多的数不清了,平时编程用的都是API。
关于java安全包和java安全框架有哪些的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。