All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.milton.principal.Principal Maven / Gradle / Ivy

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package io.milton.principal;

import javax.xml.namespace.QName;

/**
 * Marker interface to identify those classes which can act as a Principal. This can be a user or a group
 * 

* An absolute minimum requirement for a Principal is to be able to identify it, and * this is represented by the sole method on this interface which is getIdentifier. *

* Note that some Principals are defined by the webdav protocol so must be subject * to explicit processing requirements. For this reason the principle identifier * is a structured type which can be associated with a namespace and well known * names within that namespace. *

*

* There are 2 types of Principal * - Discrete: identifies a particular resource, which might be a user or group. Users are always discrete, groups may be * physical resources in which case they are represented as discrete resources. But groups may also be dynamically evaluated.. * - DAV: a dynamically evaluated group as defined by the ACL spec. Eg the Authenticated group matches any user * with an authenticated request. A dynamically evaluated group defined by the protocol is not * a physical resource do does not have a corresponding href * * @author brad */ public interface Principal { /** * A means to identify the principle to webdav clients * * @return */ PrincipleId getIdenitifer(); /** * A principleId represents a unique identifier for a principle. It consists * of 2 parts; * - type * - value (optional) *

* The type says this identifier identifies a physical resource or some construct * defined by the ACL protocol. If the principal is a physical resource the * type will be a Qualified Name with a namespace of D: (ie webdav) and a local * name of href (which means the id is a href). *

* If the identifier identifies a protocol contruct the type will identify * which construct (which must be known to the protocol and hence to milton), such * as D:all, meaning all users *

* Eg * http://www.example.com/acl/groups/maintainers * For a specific user or group *

* or *

* - for a group which represents all authenticated users, and is defined * by the DAV standard */ interface PrincipleId { /** * Eg D:href or D:all * * @return */ QName getIdType(); /** * Eg null for an idType of "D:all", or http://blah.com/users/sam for "D:href" * * @return */ String getValue(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy