public interface LoginModule
LoginModule
描述由认证技术提供商实现的接口。loginmodules插在应用程序提供特定类型的认证。
当应用程序写入LoginContext
API认证技术供应商实施LoginModule
接口。一个Configuration
指定登录(S)被用于特定的登录应用程序。因此,不同的loginmodules可以插在应用程序无需任何修改应用程序本身。
的LoginContext
负责阅读Configuration
并实例化适当的loginmodules。每个LoginModule
与Subject
,初始化CallbackHandler
,共享LoginModule
状态,和登录选项。的Subject
代表Subject
目前正在验证和更新相关的凭据,如果认证成功。loginmodules使用CallbackHandler
与用户沟通。的CallbackHandler
可以用于提示用户名和密码,例如。请注意,CallbackHandler
可能无效。loginmodules绝对需要一个CallbackHandler
认证Subject
可以把一个LoginException
。loginmodules选择使用共享状态之间的信息或数据共享。
登录模块配置选项代表这LoginModule
在登录Configuration
管理员或用户的选项。选项是由LoginModule
本身的定义和控制范围内的行为。例如,一个LoginModule
可以定义选项支持调试/测试能力。选择使用密钥值的语法定义,如调试=真。的LoginModule
存储选项作为一个Map
使值可以使用密钥恢复。注意这里是期权的一种LoginModule
选择定义数量不限。
调用应用程序将身份验证过程视为一个单一的操作。然而,认证过程中的LoginModule
收益在两个不同的阶段。在第一阶段,登录模块的login
方法被调用的方法的login
logincontext。然后对LoginModule
的login
方法执行实际的认证(提示和验证,例如密码),保存为私有状态信息的认证状态。一旦完成,登录模块的login
方法要么返回true
(如果成功)或false
(如果它应该被忽略),或抛出一个LoginException
指定失败。在失败的情况下,该LoginModule
不得重新认证或将延迟。这些任务的责任属于应用程序。如果应用程序试图重新进行身份验证,登录模块的login
方法会被调用一次。
在第二阶段,如果logincontext整体认证成功(相关要求,必要的,足够的和可选的loginmodules成功了),然后为LoginModule
的commit
方法时。的commit
方法检查其LoginModule
私下保存的状态,看看自己的认证成功。如果整体LoginContext
认证成功,登录的认证成功,然后commit
方法协会有关负责人(认证身份)和认证(认证数据,如加密密钥)与Subject
位于LoginModule
。
如果logincontext整体认证失败(相关要求,必要的,足够的和可选的loginmodules没有成功),然后为每个LoginModule
的abort
方法时。在这种情况下,该LoginModule
删除/销毁任何认证状态最初保存。
记录了一Subject
只涉及一个相。的LoginContext
调用登录的logout
方法。为LoginModule
的logout
方法然后执行注销程序,如从Subject
或登录会话信息去除校长或凭据。
一个LoginModule
实施必须有构造函数没有参数。这允许类负荷的LoginModule
实例化它。
LoginContext
,
Configuration
Modifier and Type | Method and Description |
---|---|
boolean |
abort()
中止认证过程的方法(阶段2)。
|
boolean |
commit()
提交身份验证过程的方法(第2阶段)。
|
void |
initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
初始化这个LoginModule。
|
boolean |
login()
为了验证
Subject 方法(阶段1)。
|
boolean |
logout()
方法记录了
Subject 。
|
void initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
这种方法是由LoginContext
称在这LoginModule
已实例化。这种方法的目的是将相关信息,这LoginModule
。如果这LoginModule
不懂任何存储在sharedState
或options
参数的数据,他们可以忽略。
subject
-
Subject
被认证。
callbackHandler
-
CallbackHandler
与最终用户沟通(提示用户名和密码,例如)。
sharedState
-与其他配置loginmodules共享状态。
options
-这个特殊的
LoginModule
在登录
Configuration
指定选项。
boolean login() throws LoginException
Subject
方法(阶段1)。
该方法的实施进行Subject
。例如,它可能会促使Subject
信息如用户名和密码,然后尝试验证密码。这种方法节省了认证尝试私有状态在登录的结果。
LoginModule
应该被忽略。
LoginException
如果认证失败
boolean commit() throws LoginException
这种方法是如果logincontext整体认证成功了叫(相关要求,必要的,足够的和可选的loginmodules成功)。
如果这是LoginModule自己的身份验证尝试成功(通过检索私有状态的login
方法保存,然后检查)这种方法结合Subject
位于LoginModule
有关校长和凭据。如果这是LoginModule自己的身份验证尝试失败,则此方法移除/破坏任何国家原本保存。
LoginModule
应该被忽略。
LoginException
如果提交失败
boolean abort() throws LoginException
这种方法是如果logincontext整体认证失败称为。(相关要求,必要的,足够的和可选的loginmodules没有成功)。
如果这是LoginModule自己的身份验证尝试成功(通过检索私有状态的login
方法保存,然后检查)此方法清除任何原本保存状态。
LoginModule
应该被忽略。
LoginException
如果流产失败
boolean logout() throws LoginException
Subject
这种方法的一个实现可能会删除/破坏一个主题的校长和凭据。
。LoginModule
应该被忽略。
LoginException
如果注销失败
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.