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