Class ServicePermission

  • All Implemented Interfaces:
    SerializableGuard


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

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

    服务主体名称是提供服务的KerberosPrincipal的规范名称,即KerberosPrincipal表示Kerberos服务主体。 该名称以区分大小写的方式处理。 本身可能出现星号,表示任何服务主体。

    授予此权限意味着呼叫者可以在动作指定的上下文中使用缓存凭据(TGT,服务票或秘密密钥)。 在TGT的情况下,授予该权限也意味着可以通过认证服务交换获得TGT。

    授予此权限也意味着创建KerberosPrincipalGSSName而不提供Kerberos领域,只要权限的服务主体在此领域。

    可能的行动是:

      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"); 

    对于Kerberized服务器,该操作是“accept”。 例如,访问和使用Kerberized“主机”服务(telnet等)的密钥所需的权限将被构建如下:

      ServicePermission("host/foo.example.com@EXAMPLE.COM", "accept"); 
    从以下版本开始:
    1.4
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • ServicePermission

        public ServicePermission​(String servicePrincipal,
                                 String action)
        创建一个新的 ServicePermission与指定的 servicePrincipalaction
        参数
        servicePrincipal - 服务主体的名称。 本身可能出现星号,表示任何服务主体。
        action - 动作字符串
    • 方法详细信息

      • implies

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

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

        • p是一个ServicePermission的例子,
        • p的动作是这个ServicePermission的动作的一个适当的子集,
        • p的名字等于这个ServicePermission的名字,或者这个ServicePermission的名字是“*”。
        Specified by:
        impliesPermission
        参数
        p - 允许检查。
        结果
        如果此对象隐含指定的权限,则为true,否则为false。
      • equals

        public boolean equals​(Object obj)
        检查两个ServicePermission对象是否相等。
        Specified by:
        equalsPermission
        参数
        obj - 要测试与此对象相等的对象。
        结果
        如果 obj是ServicePermission,并且具有相同的服务主体,以及作为此ServicePermission对象的操作, obj true。
        另请参见:
        Object.hashCode()HashMap
      • getActions

        public String getActions​()
        返回动作的规范字符串表示形式。 始终以以下顺序返回当前操作:启动,接受。
        Specified by:
        getActionsPermission
        结果
        这个权限的动作。
      • newPermissionCollection

        public PermissionCollection newPermissionCollection​()
        返回一个用于存储ServicePermission对象的PermissionCollection对象。
        必须以允许以任何顺序将它们插入到集合中的方式来存储ServicePermission对象,但这也允许以有效(一致的)方式实现PermissionCollection implicit方法。
        重写:
        newPermissionCollectionPermission
        结果
        适用于存储ServicePermissions的新PermissionCollection对象。