public class LoginContext extends Object
的LoginContext类描述了用于验证对象的基本方法,提供了一种方法来开发独立于底层的认证技术的应用。一个Configuration指定身份验证技术,或LoginModule,要使用一个特定的应用程序。不同的loginmodules可以插在一个应用程序无需任何修改应用程序本身。
除了支持可插拔认证,这类还支持堆叠认证的概念。应用程序可以被配置为使用多个登录。例如,可以配置Kerberos登录模块和应用智能卡登录。
一个典型的调用实例化一个logincontext与名称和CallbackHandler。logincontext采用名称的索引配置确定loginmodules应该被使用,哪些必须成功,为了成功的全面认证。的CallbackHandler传递给潜在的loginmodules所以他们可以沟通和互动(提示用户输入用户名和密码通过例如图形用户界面)。
一旦对方有一logincontext实例化,它调用login方法鉴定Subject,login方法调用配置模块完成各自的类型认证(用户名/密码、智能卡PIN验证,等)。请注意,loginmodules不会尝试验证重试或引入延迟如果认证失败。此类任务属于logincontext来电。
如果login方法返回不抛出异常,那么整体的认证成功。调用者可以获取新的认证主体通过调用getSubject方法。校长和凭据与主题相关的可以通过调用对象的各自的getPrincipals,检索getPublicCredentials,和getPrivateCredentials方法。
登出的话题,对方称logout方法。与login方法,这logout方法调用的配置模块的logout方法。
一个logincontext不应该用来验证多个主题。一个单独的logincontext应该用来验证每一个不同的主题。
下面的文件适用于所有logincontext构造函数:
Subject
null主体和null值是允许的,这logincontext实例化一个新的课题。Configuration
如果构造函数不不有配置输入参数,或者如果调用者指定null配置对象的构造函数,使用下面的调用得到的安装配置:
配置:配置。getconfiguration();为例,给构造函数的名称参数传递给方法的
Configuration.getAppConfigurationEntry。如果配置为指定的名称没有条目,然后LoginContext电话getAppConfigurationEntry的名字,“其他”(默认条目名称)。如果没有进入“其他”,然后LoginException抛出。AccessController.doPrivileged电话使模块进行安全敏感的任务(如连接到远程主机,并更新主题)将需要各自的权限,但在logincontext调用者不需要这些权限。AccessControlContext,并调用配置的模块在一个AccessController.doPrivileged呼叫上下文约束。这意味着呼叫者上下文(存储在logincontext创建)必须具有足够的权限来执行模块可以执行任何安全敏感的任务。CallbackHandler
null callbackhandler对象(和null值是允许的),logincontext的auth.login.defaultCallbackHandler安全属性查询的完全限定类名默认处理程序的实现。如果未设置安全属性,那么基础模块将不会有一个用于与用户callbackhandler。因此调用者假定配置模块的替代手段,用于验证用户。handle方法实现调用在java.security.AccessController.doPrivileged指定CallbackHandler的handle调用方法的调用者的当前AccessControlContext约束任何来电。| Constructor and Description |
|---|
LoginContext(String name)
实例化一个新的
LoginContext对象名称。
|
LoginContext(String name, CallbackHandler callbackHandler)
实例化一个新的
LoginContext对象有一个名字和一个
CallbackHandler对象。
|
LoginContext(String name, Subject subject)
实例化一个新的
LoginContext对象有一个名字和一个
Subject对象。
|
LoginContext(String name, Subject subject, CallbackHandler callbackHandler)
实例化一个新的
LoginContext对象与一个名字,一个
Subject被认证,和
CallbackHandler对象。
|
LoginContext(String name, Subject subject, CallbackHandler callbackHandler, Configuration config)
实例化一个新的
LoginContext对象与一个名字,一个
Subject被认证,一个
CallbackHandler对象,和一个登录
Configuration。
|
public LoginContext(String name) throws LoginException
LoginContext对象名称。
name -作为指标纳入
Configuration名称。
LoginException如果调用者指定
name没有出现在
Configuration没有
Configuration条目“其他”,或者auth.login.defaultcallbackhandler安全属性设置,但实现类不能加载。
SecurityException -如果要设置和调用方没有authpermission(“createlogincontext。名称”),或者名称配置条目不存在,调用者不另外有authpermission(“createlogincontext。”)
public LoginContext(String name, Subject subject) throws LoginException
LoginContext对象有一个名字和一个
Subject对象。
name -作为指标纳入
Configuration名称。
subject -
Subject认证。
LoginException如果调用者指定
name没有出现在
Configuration没有
Configuration条目“其他”,如果调用者指定
subject是
null,或者如果auth.login.defaultcallbackhandler安全属性设置,但实现类不能加载。
SecurityException -如果要设置和调用方没有authpermission(“createlogincontext。名称”),或者名称配置条目不存在,调用者不另外有authpermission(“createlogincontext。”)
public LoginContext(String name, CallbackHandler callbackHandler) throws LoginException
LoginContext对象有一个名字和一个
CallbackHandler对象。
name -作为指标纳入
Configuration名称。
callbackHandler -用loginmodules与用户沟通的
CallbackHandler对象。
LoginException如果调用者指定
name没有出现在
Configuration没有
Configuration条目“其他”,或如果调用者指定
callbackHandler是
null。
SecurityException -如果要设置和调用方没有authpermission(“createlogincontext。名称”),或者名称配置条目不存在,调用者不另外有authpermission(“createlogincontext。”)
public LoginContext(String name, Subject subject, CallbackHandler callbackHandler) throws LoginException
LoginContext对象与一个名字,一个
Subject被认证,和
CallbackHandler对象。
name -作为指标纳入
Configuration名称。
subject -
Subject认证。
callbackHandler -用loginmodules与用户沟通的
CallbackHandler对象。
LoginException如果调用者指定
name没有出现在
Configuration没有
Configuration条目“其他”,或如果调用者指定
subject是
null,或如果调用者指定
callbackHandler是
null。
SecurityException -如果要设置和调用方没有authpermission(“createlogincontext。名称”),或者名称配置条目不存在,调用者不另外有authpermission(“createlogincontext。”)
public LoginContext(String name, Subject subject, CallbackHandler callbackHandler, Configuration config) throws LoginException
LoginContext对象与一个名字,一个
Subject被认证,一个
CallbackHandler对象,和一个登录
Configuration。
name -作为指标纳入
Configuration
调用者指定名称。
subject -
Subject认证,或
null。
callbackHandler -用loginmodules与用户沟通的
CallbackHandler对象,或
null。
config -
Configuration列出登录模块被称为执行认证,或
null。
LoginException如果调用者指定
name没有出现在
Configuration没有
Configuration条目“其他”。
SecurityException -如果要设置,配置是
null,或者对方没有authpermission(“createlogincontext。名称”),或者名称配置条目不存在,调用者不另外有authpermission(“createlogincontext。”)
public void login()
throws LoginException
此方法调用每个登录模块配置为指定的LoginContext构造函数的名称的login方法,通过登录Configuration确定。每个LoginModule然后执行其各自的身份验证的类型(用户名/密码、智能卡PIN验证,等)。
这种方法如果整体认证成功调用每个配置登录的commit方法完成两相的认证过程(相关要求,必要的,足够的,和可选的loginmodules成功),或者如果整体认证失败调用每个配置abort登录的方法。如果认证成功,每个成功的LoginModule的commit方法将有关校长和凭据的Subject。如果验证失败,每个登录的abort方法移除/破坏任何以前存储的状态。
如果认证过程的commit阶段失败,那么整体的验证失败,此方法调用的方法为每个配置LoginModule abort。
如果abort相没有以任何理由,那么这种方法传播原始异常的login阶段或commit期。在任何一种情况下,整体身份验证失败。
在多loginmodules失败的情况下,这种方法在第一LoginModule失败引发的异常。
注意,如果这种方法进入abort相(或login或commit相失败),该方法调用所有loginmodules配置应用程序无论各自的Configuration标志参数。基本上这意味着Requisite和Sufficient语义的abort阶段忽视。这保证了适当的清理和状态恢复可以发生。
LoginException如果认证失败。
public void logout()
throws LoginException
Subject。
此方法调用的每个LoginModule配置这LoginContext的logout方法。每个LoginModule执行其各自的注销程序,其中可能包括清除/破坏Principal和Credential信息从Subject和国家清理。
请注意,此方法调用都loginmodules配置的应用无论各自的Configuration标志参数。基本上这意味着Requisite和Sufficient语义是本方法的忽视。这保证了适当的清理和状态恢复可以发生。
LoginException如果注销失败。
public Subject getSubject()
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.