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

com.stormpath.sdk.saml.AttributeStatementMappingRuleBuilder Maven / Gradle / Ivy

/*
* Copyright 2015 Stormpath, Inc.
*
* Licensed 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 com.stormpath.sdk.saml;

import java.util.Set;

/**
 * A Builder to construct {@link AttributeStatementMappingRule} resources.
 * Usage Example:
 *
 *  AttributeStatementMappingRule rule = SamlAttributeStatementMappingRules.ruleBuilder()
 *      .setName("name")
 *      .setAccountAttributes("field1", "field2")
 *      .build();
 *
 * @see AttributeStatementMappingRule
 *
 * @since 1.0.RC8
 */
public interface AttributeStatementMappingRuleBuilder {

    /**
     * Sets the SAML Attribute name, that when encountered, should have its value applied as Account field values.
     * When this name is encountered when processing a SAML Attribute Statement, its associated value will be set as the
     * value for all Stormpath Account field names specified in the
     * {@link AttributeStatementMappingRule#getAccountAttributes() accountAttributes} collection.
     *
     * @param name the SAML Attribute name that when encountered, should have its value applied as Account field values.
     */
    AttributeStatementMappingRuleBuilder setName(String name);

    /**
     * Sets the format for the SAML Attribute specified by {@link com.stormpath.sdk.saml.AttributeStatementMappingRule#getName() getName()}.
     * Examples of valid formats are:
     *  urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
     *  urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
     *  urn:oasis:names:tc:SAML:2.0:nameid-format:transient
     *  urn:oasis:names:tc:SAML:2.0:attrname-format:basic
     *  urn:oasis:names:tc:SAML:2.0:nameid-format:entity
     *
     * @param nameFormat the format for the SAML Attribute specified by {@link com.stormpath.sdk.saml.AttributeStatementMappingRule#getName() getName()}.
     */
    AttributeStatementMappingRuleBuilder setNameFormat(String nameFormat);

    /**
     * Sets the Stormpath account fields that should be updated when encountering {@link AttributeStatementMappingRule#getName() named}
     * SAML Attribute name.  If discovered, that SAML Attribute value will be set on all of the Stormpath account
     * fields named in this collection.
     *
     * @param accountAttributes the account fields that should be updated when there's a match with SAML Attribute name.
     */
    AttributeStatementMappingRuleBuilder setAccountAttributes(String... accountAttributes);

    /**
     * Sets the Stormpath account fields that should be updated when encountering {@link AttributeStatementMappingRule#getName() named}
     * SAML Attribute name.  If discovered, that SAML Attribute value will be set on all of the Stormpath account
     * fields named in this collection.
     *
     * @param accountAttributes the account fields that should be updated when there's a match with SAML Attribute name.
     */
    AttributeStatementMappingRuleBuilder setAccountAttributes(Set accountAttributes);

    /**
     * Builds a new {@link AttributeStatementMappingRule} based on the current state of this builder.
     *
     * @return a new {@link AttributeStatementMappingRule} to be included in the {@link AttributeStatementMappingRules} for a Saml Provider.
     */
    AttributeStatementMappingRule build();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy