1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.attributeDefinition;
18
19 import java.util.Collection;
20
21 import org.opensaml.Configuration;
22 import org.opensaml.common.SAMLObjectBuilder;
23 import org.opensaml.saml2.core.NameID;
24
25 import edu.internet2.middleware.shibboleth.common.attribute.BaseAttribute;
26 import edu.internet2.middleware.shibboleth.common.attribute.provider.BasicAttribute;
27 import edu.internet2.middleware.shibboleth.common.attribute.resolver.AttributeResolutionException;
28 import edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.ShibbolethResolutionContext;
29
30
31
32
33
34
35
36
37 public class SAML2NameIDAttributeDefinition extends BaseAttributeDefinition {
38
39
40 private final SAMLObjectBuilder<NameID> nameIdBuilder;
41
42
43 private String nameIdFormat;
44
45
46 private String nameIdQualifier;
47
48
49 public SAML2NameIDAttributeDefinition() {
50 super();
51 nameIdBuilder = (SAMLObjectBuilder<NameID>) Configuration.getBuilderFactory().getBuilder(
52 NameID.DEFAULT_ELEMENT_NAME);
53 }
54
55
56
57
58
59
60 public String getNameIdFormat() {
61 return nameIdFormat;
62 }
63
64
65
66
67
68
69 public void setNameIdFormat(String format) {
70 nameIdFormat = format;
71 }
72
73
74
75
76
77
78 public String getNameIdQualifier() {
79 return nameIdQualifier;
80 }
81
82
83
84
85
86
87 public void setNameIdQualifier(String qualifier) {
88 nameIdQualifier = qualifier;
89 }
90
91
92 protected BaseAttribute<?> doResolve(ShibbolethResolutionContext resolutionContext)
93 throws AttributeResolutionException {
94 BasicAttribute<NameID> attribute = new BasicAttribute<NameID>();
95 attribute.setId(getId());
96
97 Collection<?> values = getValuesFromAllDependencies(resolutionContext);
98 if (values != null && !values.isEmpty()) {
99 for (Object value : values) {
100 attribute.getValues().add(buildNameId(value.toString(), resolutionContext));
101 }
102 }
103
104 return attribute;
105 }
106
107
108
109
110
111
112
113
114
115
116
117 protected NameID buildNameId(String nameIdValue, ShibbolethResolutionContext resolutionContext) {
118 NameID nameId = nameIdBuilder.buildObject();
119 nameId.setValue(nameIdValue);
120
121 if (nameIdFormat != null) {
122 nameId.setFormat(nameIdFormat);
123 }
124
125 if (nameIdQualifier != null) {
126 nameId.setNameQualifier(nameIdQualifier);
127 } else {
128 nameId.setNameQualifier(resolutionContext.getAttributeRequestContext().getLocalEntityId());
129 }
130
131 nameId.setSPNameQualifier(resolutionContext.getAttributeRequestContext().getInboundMessageIssuer());
132
133 return nameId;
134 }
135
136
137 public void validate() throws AttributeResolutionException {
138
139 }
140 }