]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
bfe2635082c44b57cf3004ac7a1347857a2d6585
[tmp/jakarta-migration.git] /
1 package org.collectionspace.authentication.spring;
2
3 import java.util.List;
4 import java.util.Map;
5 import java.util.Set;
6
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;
12
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;
17
18 /**
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.
22  */
23 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY)
24 @JsonDeserialize(using = Saml2AuthenticatedCSpaceUserDeserializer.class)
25 @JsonAutoDetect(
26         fieldVisibility = JsonAutoDetect.Visibility.ANY,
27         getterVisibility = JsonAutoDetect.Visibility.NONE,
28         isGetterVisibility = JsonAutoDetect.Visibility.NONE
29 )
30 @JsonIgnoreProperties(ignoreUnknown = true)
31 public class Saml2AuthenticatedCSpaceUser extends CSpaceUser implements Saml2AuthenticatedPrincipal {
32         private Saml2AuthenticatedPrincipal principal;
33
34         public Saml2AuthenticatedCSpaceUser(Saml2AuthenticatedPrincipal principal, CSpaceUser user) {
35                 this(
36                         principal,
37                         user.getUsername(),
38                         user.getPassword(),
39                         user.getSalt(),
40                         user.isRequireSSO(),
41                         user.getTenants(),
42                         (Set<GrantedAuthority>) user.getAuthorities()
43                 );
44         }
45
46         public Saml2AuthenticatedCSpaceUser(
47                 Saml2AuthenticatedPrincipal principal,
48                 String username,
49                 String password,
50                 String salt,
51                 boolean requireSSO,
52                 Set<CSpaceTenant> tenants,
53                 Set<? extends GrantedAuthority> authorities
54         ) {
55                 super(username, password, salt, requireSSO, tenants, authorities);
56
57                 this.principal = principal;
58         }
59
60         @Override
61         public String getName() {
62                 return principal.getName();
63         }
64
65         @Override
66         public <A> A getFirstAttribute(String name) {
67                 return principal.getFirstAttribute(name);
68         }
69
70         @Override
71         public <A> List<A> getAttribute(String name) {
72                 return principal.getAttribute(name);
73         }
74
75         @Override
76         public Map<String, List<Object>> getAttributes() {
77                 return principal.getAttributes();
78         }
79
80         @Override
81         public String getRelyingPartyRegistrationId() {
82                 return principal.getRelyingPartyRegistrationId();
83         }
84
85         @Override
86         public List<String> getSessionIndexes() {
87                 return principal.getSessionIndexes();
88         }
89 }