1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package edu.internet2.middleware.shibboleth.idp.session.impl;
19
20 import java.security.Principal;
21 import java.util.Map;
22 import java.util.Set;
23 import java.util.concurrent.ConcurrentHashMap;
24
25 import javax.security.auth.Subject;
26
27 import edu.internet2.middleware.shibboleth.common.session.impl.AbstractSession;
28 import edu.internet2.middleware.shibboleth.idp.authn.UsernamePrincipal;
29 import edu.internet2.middleware.shibboleth.idp.session.AuthenticationMethodInformation;
30 import edu.internet2.middleware.shibboleth.idp.session.ServiceInformation;
31 import edu.internet2.middleware.shibboleth.idp.session.Session;
32
33
34 public class SessionImpl extends AbstractSession implements Session {
35
36
37 private static final long serialVersionUID = 2927868242208211623L;
38
39
40 private byte[] sessionSecret;
41
42
43 private Map<String, AuthenticationMethodInformation> authnMethods;
44
45
46 private Map<String, ServiceInformation> servicesInformation;
47
48
49
50
51
52
53
54
55 public SessionImpl(String sessionId, byte[] secret, long timeout) {
56 super(sessionId, timeout);
57
58 sessionSecret = secret;
59 authnMethods = new ConcurrentHashMap<String, AuthenticationMethodInformation>(2);
60 servicesInformation = new ConcurrentHashMap<String, ServiceInformation>(2);
61 }
62
63
64 public synchronized byte[] getSessionSecret() {
65 return sessionSecret;
66 }
67
68
69 public synchronized Map<String, AuthenticationMethodInformation> getAuthenticationMethods() {
70 return authnMethods;
71 }
72
73
74 public synchronized Map<String, ServiceInformation> getServicesInformation() {
75 return servicesInformation;
76 }
77
78
79
80
81
82
83
84
85 public synchronized ServiceInformation getServiceInformation(String entityId) {
86 return servicesInformation.get(entityId);
87 }
88
89
90
91
92
93
94
95
96 public synchronized String getPrincipalName() {
97 Subject subject = getSubject();
98
99 Set<? extends Principal> principals = subject.getPrincipals(UsernamePrincipal.class);
100 if (principals == null || principals.isEmpty()) {
101 principals = subject.getPrincipals();
102 }
103
104 if (principals == null || principals.isEmpty()) {
105 return null;
106 }
107
108 return principals.iterator().next().getName();
109 }
110 }