Example usage for org.apache.shiro.session.mgt DefaultSessionContext DefaultSessionContext

List of usage examples for org.apache.shiro.session.mgt DefaultSessionContext DefaultSessionContext

Introduction

In this page you can find the example usage for org.apache.shiro.session.mgt DefaultSessionContext DefaultSessionContext.

Prototype

public DefaultSessionContext() 

Source Link

Usage

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();
}