类 ServicePermission

java.lang.Object
java.security.Permission
javax.security.auth.kerberos.ServicePermission
所有已实现的接口:
Serializable , Guard

public final class ServicePermission extends Permission implements Serializable
此类用于保护 Kerberos 服务和访问这些服务所需的凭据。服务主体与访问服务所需的凭据之间存在一对一的映射。因此,授予对服务主体的访问权限隐式授予对与服务主体建立安全上下文所需的凭据的访问权限。无论凭据是在缓存中还是通过与 KDC 的交换获取,这都适用。凭据可以是票证授予票证、服务票证或密钥表中的密钥。

ServicePermission 包含一个服务主体名称和一个操作列表,这些操作指定可以在其中使用凭证的上下文。

服务主体名称是提供服务的 KerberosPrincipal 的规范名称,即 KerberosPrincipal 代表 Kerberos 服务主体。此名称区分大小写。星号可能会单独出现,以表示任何服务主体。

授予此权限意味着调用方可以在操作指定的上下文中使用缓存的凭据(TGT、服务票证或密钥)。在 TGT 的情况下,授予此权限还意味着 TGT 可以通过身份验证服务交换获得。

授予此权限还意味着在不提供 Kerberos 领域的情况下创建 KerberosPrincipal GSSName ,只要权限的服务主体在该领域中即可。

可能的操作是:

  initiate -       allow the caller to use the credential to
              initiate a security context with a service
              principal.

  accept -        allow the caller to use the credential to
              accept security context as a particular
              principal.
 
例如,要指定访问 TGT 的权限以启动安全上下文,该权限的构造如下:
   ServicePermission("krbtgt/EXAMPLE.COM@EXAMPLE.COM", "initiate");
 

要获得服务票证以启动与“主机”服务的上下文,权限构造如下:

   ServicePermission("host/foo.example.com@EXAMPLE.COM", "initiate");
 

对于基于 Kerberos 的服务,操作是“接受”。例如,访问和使用 Kerberized“主机”服务(telnet 等)的密钥所需的权限将构造如下:

   ServicePermission("host/foo.example.com@EXAMPLE.COM", "accept");
 
自从:
1.4
参见:
  • 构造方法详细信息

    • ServicePermission

      public ServicePermission(String  servicePrincipal, String  action)
      使用指定的 servicePrincipalaction 创建一个新的 ServicePermission
      参数:
      servicePrincipal - 服务主体的名称。星号可能会单独出现,以表示任何服务主体。
      action - 动作字符串
  • 方法详情

    • implies

      public boolean implies(Permission  p)
      检查此 Kerberos 服务权限对象是否“隐含”指定权限。

      更具体地说,如果以下所有条件都为真,则此方法返回 true(如果其中任何一个不为真,则返回 false):

      • pServicePermission 的实例,
      • p的动作是这个 ServicePermission 的动作的适当子集,
      • p的名字等于这个ServicePermission的名字或者这个ServicePermission的名字是“*”。
      指定者:
      implies 在类 Permission
      参数:
      p - 检查的权限。
      返回:
      如果此对象隐含了指定的权限,则为 true,否则为 false。
    • equals

      public boolean equals(Object  obj)
      检查两个 ServicePermission 对象是否相等。
      指定者:
      equals 在类 Permission
      参数:
      obj - 要测试与此对象是否相等的对象。
      返回:
      如果 obj 是一个 ServicePermission,并且具有与此 ServicePermission 对象相同的服务主体和操作,则为真。
      参见:
    • hashCode

      public int hashCode()
      返回此对象的哈希码值。
      指定者:
      hashCode 在类 Permission
      返回:
      此对象的哈希码值。
      参见:
    • getActions

      public String  getActions()
      返回操作的规范字符串表示形式。始终按以下顺序返回当前操作:启动、接受。
      指定者:
      getActions 在类 Permission
      返回:
      这个 Permission 的动作。
    • newPermissionCollection

      public PermissionCollection  newPermissionCollection()
      返回用于存储 ServicePermission 对象的 PermissionCollection 对象。
      ServicePermission 对象的存储方式必须允许它们以任何顺序插入到集合中,但也使 PermissionCollection 隐含方法能够以高效(且一致)的方式实现。
      重写:
      newPermissionCollection 在类 Permission
      返回:
      适合存储 ServicePermissions 的新 PermissionCollection 对象。