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 private String nameIdSPQualifier;
50
51
52 public SAML2NameIDAttributeDefinition() {
53 super();
54 nameIdBuilder = (SAMLObjectBuilder<NameID>) Configuration.getBuilderFactory().getBuilder(
55 NameID.DEFAULT_ELEMENT_NAME);
56 }
57
58
59
60
61
62
63 public String getNameIdFormat() {
64 return nameIdFormat;
65 }
66
67
68
69
70
71
72 public void setNameIdFormat(String format) {
73 nameIdFormat = format;
74 }
75
76
77
78
79
80
81 public String getNameIdQualifier() {
82 return nameIdQualifier;
83 }
84
85
86
87
88
89
90 public void setNameIdQualifier(String qualifier) {
91 nameIdQualifier = qualifier;
92 }
93
94
95
96
97
98
99 public String getNameIdSPQualifier() {
100 return nameIdSPQualifier;
101 }
102
103
104
105
106
107
108 public void setNameIdSPQualifier(String qualifier) {
109 nameIdSPQualifier = qualifier;
110 }
111
112
113 protected BaseAttribute<?> doResolve(ShibbolethResolutionContext resolutionContext)
114 throws AttributeResolutionException {
115 BasicAttribute<NameID> attribute = new BasicAttribute<NameID>();
116 attribute.setId(getId());
117
118 Collection<?> values = getValuesFromAllDependencies(resolutionContext);
119 if (values != null && !values.isEmpty()) {
120 for (Object value : values) {
121 attribute.getValues().add(buildNameId(value.toString(), resolutionContext));
122 }
123 }
124
125 return attribute;
126 }
127
128
129
130
131
132
133
134
135
136
137
138 protected NameID buildNameId(String nameIdValue, ShibbolethResolutionContext resolutionContext) {
139 NameID nameId = nameIdBuilder.buildObject();
140 nameId.setValue(nameIdValue);
141
142 if (nameIdFormat != null) {
143 nameId.setFormat(nameIdFormat);
144 }
145
146 if (nameIdQualifier != null) {
147 nameId.setNameQualifier(nameIdQualifier);
148 } else {
149 nameId.setNameQualifier(resolutionContext.getAttributeRequestContext().getLocalEntityId());
150 }
151
152 if (nameIdSPQualifier != null) {
153 nameId.setSPNameQualifier(nameIdSPQualifier);
154 } else {
155 nameId.setSPNameQualifier(resolutionContext.getAttributeRequestContext().getInboundMessageIssuer());
156 }
157
158 return nameId;
159 }
160
161
162 public void validate() throws AttributeResolutionException {
163
164 }
165 }