]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
60488ac20e284eb0b65cf9add4c25d93f329da83
[tmp/jakarta-migration.git] /
1 package org.collectionspace.authentication.spring;
2
3 import java.util.Collection;
4
5 import org.collectionspace.authentication.CSpaceUser;
6 import org.springframework.security.core.AuthenticatedPrincipal;
7 import org.springframework.security.core.GrantedAuthority;
8 import org.springframework.security.saml2.provider.service.authentication.Saml2AuthenticatedPrincipal;
9 import org.springframework.security.saml2.provider.service.authentication.Saml2Authentication;
10
11 import com.fasterxml.jackson.annotation.JsonAutoDetect;
12 import com.fasterxml.jackson.annotation.JsonCreator;
13 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
14 import com.fasterxml.jackson.annotation.JsonProperty;
15 import com.fasterxml.jackson.annotation.JsonTypeInfo;
16
17 /**
18  * A Saml2Authentication whose principal is a CSpaceUser.
19  */
20 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY)
21 @JsonAutoDetect(
22   fieldVisibility = JsonAutoDetect.Visibility.ANY,
23   getterVisibility = JsonAutoDetect.Visibility.NONE,
24         isGetterVisibility = JsonAutoDetect.Visibility.NONE
25 )
26 @JsonIgnoreProperties(value = { "authenticated" }, ignoreUnknown = true)
27 public class CSpaceSaml2Authentication extends Saml2Authentication {
28   private final CSpaceUser user;
29
30   public CSpaceSaml2Authentication(CSpaceUser user, Saml2Authentication authentication) {
31     this(
32       user,
33       (Saml2AuthenticatedPrincipal) authentication.getPrincipal(),
34       authentication.getSaml2Response(),
35       authentication.getAuthorities()
36     );
37   }
38
39   public CSpaceSaml2Authentication(
40     CSpaceUser user,
41     AuthenticatedPrincipal principal,
42     java.lang.String saml2Response,
43     java.util.Collection<? extends GrantedAuthority> authorities
44   ) {
45     this(
46       new Saml2AuthenticatedCSpaceUser((Saml2AuthenticatedPrincipal) principal, user),
47       principal,
48       saml2Response,
49       authorities
50     );
51   }
52
53   @JsonCreator
54   public CSpaceSaml2Authentication(
55     @JsonProperty("user") Saml2AuthenticatedCSpaceUser user,
56     @JsonProperty("principal") AuthenticatedPrincipal principal,
57     @JsonProperty("saml2Response") java.lang.String saml2Response,
58     @JsonProperty("authorities") java.util.Collection<? extends GrantedAuthority> authorities
59   ) {
60     super(principal, saml2Response, authorities);
61
62     this.user = user;
63
64     this.setAuthenticated(true);
65   }
66
67   @Override
68   public Object getPrincipal() {
69     return user;
70   }
71
72   @Override
73   public Collection<GrantedAuthority> getAuthorities() {
74     return user.getAuthorities();
75   }
76 }