List of usage examples for org.apache.shiro.session.mgt DefaultSessionContext DefaultSessionContext
public DefaultSessionContext()
From source file:com.caricah.iotracah.core.handlers.ConnectionHandler.java
License:Apache License
private Observable<IOTClient> openSubject(String connectedCluster, UUID connectedNode, String connectionID, String clientIdentifier, boolean cleanSession, String userName, String password, int keepAliveTime, String sourceHost, Protocol protocol) { return Observable.create(observable -> { try {// ww w. j a va 2s.c om log.debug(" openSubject : create -- initiating subject creation."); final String partition = processUsernameForPartition(userName); final String activeClientId; if (Objects.isNull(clientIdentifier)) { activeClientId = "iot-cl-" + getWorker().getAtomicSequence().incrementAndGet(); } else { activeClientId = clientIdentifier; } IotClientKey sessionId = IOTClient.keyFromStrings(partition, activeClientId); try { IdConstruct idConstruct = new IdConstruct(partition, userName, activeClientId); PrincipalCollection principals = new SimplePrincipalCollection(idConstruct, ""); Subject.Builder subjectBuilder = new Subject.Builder(); subjectBuilder = subjectBuilder.principals(principals); subjectBuilder = subjectBuilder.host(sourceHost); subjectBuilder = subjectBuilder.sessionCreationEnabled(true); subjectBuilder = subjectBuilder.sessionId(sessionId); IOTSubject activeUser = (IOTSubject) subjectBuilder.buildSubject(); if (activeUser.isAuthenticated() && cleanSession) { //Clean a logged in session. activeUser.logout(); } char[] passwordChars; if (null == password) passwordChars = null; else passwordChars = password.toCharArray(); IdPassToken token = new IdPassToken(partition, userName, activeClientId, passwordChars); activeUser.login(token); //We have obtained a client to work with. log.debug(" openSubject : create -- We obtained a client."); Double keepAliveDisconnectiontime = keepAliveTime * 1.5; log.debug( " openSubject : Authenticated client session <{}> username {} with keep alive of {} seconds", activeClientId, userName, keepAliveDisconnectiontime); //Force a session context. SessionContext sessionContext = new DefaultSessionContext(); sessionContext.put(IOTClient.CONTEXT_PARTITION_KEY, partition); sessionContext.put(IOTClient.CONTEXT_USERNAME_KEY, userName); sessionContext.put(IOTClient.CONTEXT_CLIENT_ID_KEY, activeClientId); activeUser.setSessionContext(sessionContext); IOTClient session = (IOTClient) activeUser.getSession(); session.setTimeout(keepAliveDisconnectiontime.longValue()); session.setConnectedCluster(connectedCluster); session.setConnectedNode(connectedNode.toString()); session.setConnectionId(connectionID); session.setIsActive(true); session.setIsExpired(false); session.setStopTimestamp(null); session.setProtocol(protocol.name()); session.setIsCleanSession(cleanSession); if (Protocol.fromString(session.getProtocol()).isNotPersistent()) { session.setAuthKey(generateMAC()); } session.touch(); observable.onNext(session); observable.onCompleted(); } catch (NoSuchAlgorithmException | AuthenticationException e) { observable.onError(e); } } catch (Exception e) { observable.onError(e); } }); }
From source file:org.ow2.proactive.workflowcatalog.SchedulerAuthentication.java
License:Open Source License
private static Subject createSubject(String token, ISchedulerProxy scheduler) { SessionContext sessionContext = new DefaultSessionContext(); sessionContext.setSessionId(token);/* w w w . ja v a2 s . c o m*/ sessionContext.put(HttpHeaderTokenSessionManager.TOKEN_KEY, token); sessionContext.put(SchedulerRestSession.SCHEDULER_SESSION_KEY, scheduler); Session session = SecurityUtils.getSecurityManager().start(sessionContext); return new Subject.Builder().session(session).buildSubject(); }