The Shibboleth IdP V4 software will leave support on September 1, 2024.

SAML1ScopedStringEncoder

Namespace: urn:mace:shibboleth:2.0:resolver
Schema: http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd

The SAML1ScopedString attribute encoder encodes an IdPAttribute with "scoped" string values as a SAML 1 Attribute. This encoder typically places the scope portion into a separate XML attribute.

Reference

Name

Type

Req?

Default

Description

Name

Type

Req?

Default

Description

name

String

Y

 

Value to put into the AttributeName attribute of the output <AttributeValue> elements

namespace

String



urn:mace:shibboleth:1.0:attributeNamespace:uri

Value to put into the AttributeNamespace attribute of the output <AttributeValue> elements

scopeAttribute

String

 

Scope

If scopeType is "attribute", then the scope is passed an XML attribute inside the <AttributeValue> elements with this name while the (unscoped) value is passed in the content of the element

scopeDelimiter

String

 

@

If scopeType is "inline", then the output <AttributeValue> element content is constructed by concatenating the unscoped value, the value of this attribute, and the scope

scopeType

"attribute" or "inline"

 

attribute

Defines what format the attribute is to be encoded in, generally should be left alone

Examples

<AttributeEncoder xsi:type="SAML1ScopedString" name="https://example.org/oldstyle" scopeType="attribute"/> <AttributeEncoder xsi:type="SAML1ScopedString" name="https://example.org/newstyle" scopeDelimiter="#"/>

Notes

The AttributeNamespace XML attribute in SAML 1 is a nasty little piece of work that was badly defined and very inconsistently implemented (often nonsensically) by different implementations of SAML 1. Shibboleth used this attribute in a manner analagous to the SAML 2 NameFormat attribute that took its place, and defaults to using a URI constant we defined in the very earliest releases to signal that the AttributeName would be a URI and stand on its own. You will typically find that other implementations will require you to override this with some value they invent out of whole cloth. No value is right or wrong, it's an unfortunate mistake that just has to be worked around on a case by case basis.