1 package org.collectionspace.authentication.spring;
7 import org.collectionspace.authentication.CSpaceTenant;
8 import org.collectionspace.authentication.CSpaceUser;
9 import org.collectionspace.authentication.jackson2.Saml2AuthenticatedCSpaceUserDeserializer;
10 import org.springframework.security.core.GrantedAuthority;
11 import org.springframework.security.saml2.provider.service.authentication.Saml2AuthenticatedPrincipal;
13 import com.fasterxml.jackson.annotation.JsonAutoDetect;
14 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
15 import com.fasterxml.jackson.annotation.JsonTypeInfo;
16 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
19 * A CSpaceUser that is also a Saml2AuthenticatedPrincipal. This is needed because various parts of
20 * Spring Security use instanceof Saml2AuthenticatedPrincipal to determine if the currently
21 * authenticated user logged in via SAML.
23 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY)
24 @JsonDeserialize(using = Saml2AuthenticatedCSpaceUserDeserializer.class)
26 fieldVisibility = JsonAutoDetect.Visibility.ANY,
27 getterVisibility = JsonAutoDetect.Visibility.NONE,
28 isGetterVisibility = JsonAutoDetect.Visibility.NONE
30 @JsonIgnoreProperties(ignoreUnknown = true)
31 public class Saml2AuthenticatedCSpaceUser extends CSpaceUser implements Saml2AuthenticatedPrincipal {
32 private Saml2AuthenticatedPrincipal principal;
34 public Saml2AuthenticatedCSpaceUser(Saml2AuthenticatedPrincipal principal, CSpaceUser user) {
42 (Set<GrantedAuthority>) user.getAuthorities()
46 public Saml2AuthenticatedCSpaceUser(
47 Saml2AuthenticatedPrincipal principal,
52 Set<CSpaceTenant> tenants,
53 Set<? extends GrantedAuthority> authorities
55 super(username, password, salt, requireSSO, tenants, authorities);
57 this.principal = principal;
61 public String getName() {
62 return principal.getName();
66 public <A> A getFirstAttribute(String name) {
67 return principal.getFirstAttribute(name);
71 public <A> List<A> getAttribute(String name) {
72 return principal.getAttribute(name);
76 public Map<String, List<Object>> getAttributes() {
77 return principal.getAttributes();
81 public String getRelyingPartyRegistrationId() {
82 return principal.getRelyingPartyRegistrationId();
86 public List<String> getSessionIndexes() {
87 return principal.getSessionIndexes();