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