public abstract class Configuration extends Object
一个登录配置包含以下信息。注意,这个例子只代表了Configuration
默认语法。这个类的子类的实现可能实现的替代语法,可以从任何来源,如文件、数据库或服务器Configuration
。
名称{ModuleClass Flag ModuleOptions;ModuleClass Flag ModuleOptions;ModuleClass Flag ModuleOptions;};名称{ModuleClass Flag ModuleOptions;ModuleClass Flag ModuleOptions;};其他{ModuleClass Flag ModuleOptions;ModuleClass Flag ModuleOptions;};
在Configuration
每个条目索引通过一个应用程序的名称,名称,并包含一个列表的配置,应用loginmodules。每个LoginModule
是通过指定完全限定类名。认证将在指定的确切顺序中向下进行模块列表。如果应用程序没有一个特定的输入,则默认为特定条目“其他”。
国旗值控制的整体行为认证收益下降堆栈。下面描述的国旗和各自的语义的有效值:
1)所需的LoginModule
必须成功。如果它成功或失败,身份验证仍在继续继续向下的LoginModule
列表。2)必要的LoginModule
必须成功。如果它成功,身份验证将继续下去LoginModule
列表。如果它失败,控件立即返回到应用程序中(身份验证不向下进行LoginModule
列表)。3)足够的LoginModule
不需要成功。如果它成功了,立即控制返回到应用程序(身份验证不进行了LoginModule
列表)。如果失败,身份验证将继续下去LoginModule
列表。4)可选的LoginModule
不需要成功。如果它成功或失败,身份验证仍然继续进行下去LoginModule
列表。
整体认证成功只有当所有要求的和必要的loginmodules成功。如果一个足够的LoginModule
配置和成功,那么只有要求的和必要的loginmodules,足够的LoginModule
需要成功成功整体认证优先。如果没有要求的或必要的loginmodules为应用程序配置,那么至少有一个足够的或可选LoginModule
必须成功。
moduleoptions是空间分隔的LoginModule
-specific值直接传递到潜在的loginmodules列表。选项的LoginModule
本身的定义,和行为的控制范围内。例如,一个LoginModule
可以定义选项支持调试/测试能力。指定在Configuration
选择正确的方法是使用下面的键-值配对:调试=“真”。键和值应该用“等于”符号分隔,并且值应该被双引号包围着。如果窗体中的一个字符串,$ {系统。属性},发生在值中,它将被扩展到系统属性的值。注意,有一个LoginModule
选项可以定义数量不限。
以下是一个基于语法上面的例子Configuration
入门:
登录{com.sun.security.auth.module.unixloginmodule要求;com.sun.security.auth.module.krb5loginmodule可选useticketcache =“true”ticketcache =“$ { } {用户。家美元/ }票”;};
这Configuration
指定应用程序命名为“登录”,需要用户首先验证到com.sun.security.auth.module.unixloginmodule,这是取得成功所需的。即使unixloginmodule认证失败的com.sun.security.auth.module.krb5loginmodule仍然会调用。这有助于隐藏失败的根源。由于krb5loginmodule是可选,整体认证成功只有unixloginmodule(要求的)成功。
在运行时在任何给定的时间内只有一个配置对象。一个配置对象可以通过调用setConfiguration
方法安装。安装配置对象可以通过调用getConfiguration
方法得到的。
如果没有配置对象已安装在运行时,调用getConfiguration
安装默认配置实现的一个实例(这一抽象类的默认子类实现)。默认配置的实现可以通过设置的login.configuration.provider
安全属性的值所需结构的子类实现的完全限定名称的改变。
应用程序代码可以直接子类配置提供一个自定义的实现。另外,一个配置对象的一个实例可以通过调用其中的getInstance
工厂方法与标准型构造。默认类型是“javaloginconfig”政策。看到一列标准配置类型的 Java Cryptography Architecture Standard Algorithm Name Documentation配置节。
LoginContext
,
security properties
Modifier and Type | Class and Description |
---|---|
static interface |
Configuration.Parameters
这表示配置参数的一个标记接口。
|
Modifier | Constructor and Description |
---|---|
protected |
Configuration()
唯一的构造函数。
|
Modifier and Type | Method and Description |
---|---|
abstract AppConfigurationEntry[] |
getAppConfigurationEntry(String name)
检索指定的名称从这个配置的appconfigurationentries。
|
static Configuration |
getConfiguration()
获取已安装的登录配置。
|
static Configuration |
getInstance(String type, Configuration.Parameters params)
返回指定类型的配置对象。
|
static Configuration |
getInstance(String type, Configuration.Parameters params, Provider provider)
返回指定类型的配置对象。
|
static Configuration |
getInstance(String type, Configuration.Parameters params, String provider)
返回指定类型的配置对象。
|
Configuration.Parameters |
getParameters()
返回配置参数。
|
Provider |
getProvider()
返回此配置的提供程序。
|
String |
getType()
返回此配置的类型。
|
void |
refresh()
刷新和重新加载配置。
|
static void |
setConfiguration(Configuration configuration)
设置登录
Configuration 。
|
public static Configuration getConfiguration()
Configuration.setConfiguration
方法,那么对象返回。否则,返回一个默认的配置对象。
SecurityException
如果调用者没有权限获取配置。
setConfiguration(javax.security.auth.login.Configuration)
public static void setConfiguration(Configuration configuration)
Configuration
。
configuration
-新的
Configuration
SecurityException
-如果当前线程没有权限设置
Configuration
。
getConfiguration()
public static Configuration getInstance(String type, Configuration.Parameters params) throws NoSuchAlgorithmException
该方法通过注册安全提供商列表,从最开始的首选供应商。一个新的配置对象封装configurationspi实施支持指定类型的第一个提供程序返回。
注意,注册商的列表可以通过Security.getProviders()
检索方法。
type
-指定的配置类型。看到一列标准配置类型的
Java Cryptography Architecture Standard Algorithm Name Documentation配置节。
params
-配置参数,这可能是空的。
SecurityException
如果调用者没有权限为指定的类型得到一个配置实例。
NullPointerException
-如果指定类型的空。
IllegalArgumentException
-如果指定的参数是不理解的configurationspi实现从选定的供应商。
NoSuchAlgorithmException
-如果没有供应商的支持为指定的类型configurationspi实施。
Provider
public static Configuration getInstance(String type, Configuration.Parameters params, String provider) throws NoSuchProviderException, NoSuchAlgorithmException
一个新的配置对象封装configurationspi实现从指定的提供程序返回。指定的提供程序必须在提供者列表中注册。
注意,注册商的列表可以通过Security.getProviders()
检索方法。
type
-指定的配置类型。看到一列标准配置类型的
Java Cryptography Architecture Standard Algorithm Name Documentation配置节。
params
-配置参数,这可能是空的。
provider
-供应商。
SecurityException
如果调用者没有权限为指定的类型得到一个配置实例。
NullPointerException
-如果指定类型的空。
IllegalArgumentException
-如果指定供应商是null或空,或者指定的参数是不理解的configurationspi实现从指定的供应商。
NoSuchProviderException
-如果指定的供应商不在安全提供商注册名单。
NoSuchAlgorithmException
-如果指定的提供程序不支持指定类型的configurationspi实施。
Provider
public static Configuration getInstance(String type, Configuration.Parameters params, Provider provider) throws NoSuchAlgorithmException
一个新的配置对象封装configurationspi实现从指定的提供程序对象返回。请注意,指定的提供程序对象不必在提供者列表中注册。
type
-指定的配置类型。看到一列标准配置类型的
Java Cryptography Architecture Standard Algorithm Name Documentation配置节。
params
-配置参数,这可能是空的。
provider
-供应商。
SecurityException
如果调用者没有权限为指定的类型得到一个配置实例。
NullPointerException
-如果指定类型的空。
IllegalArgumentException
-如果指定的提供程序是无效的,或者指定的参数是不理解的configurationspi实现从指定的供应商。
NoSuchAlgorithmException
-如果指定的提供程序不支持指定类型的configurationspi实施。
Provider
public Provider getProvider()
这种配置实例将只有通过电话Configuration.getInstance
得到供应商。否则,此方法返回空。
public String getType()
这种配置实例将只有通过电话Configuration.getInstance
得到型。否则,此方法返回空。
public Configuration.Parameters getParameters()
这种配置实例将只有通过电话Configuration.getInstance
得到参数。否则,此方法返回空。
public abstract AppConfigurationEntry[] getAppConfigurationEntry(String name)
name
用于索引配置的名称。
public void refresh()
此方法使此配置对象刷新/重新加载其内容在一个实现依赖的方式。例如,如果这个配置对象存储输入的文件,调用refresh
可能导致文件被重新读取。
这种方法的默认实现不做任何事。这种方法应该重写如果刷新操作是实现所支持的。
SecurityException
如果调用者没有权限更新其配置。
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.