Example #1
0
  protected OpenIdUser discover(Identifier identifier, HttpServletRequest request)
      throws Exception {
    OpenIdUser user = _userCache.get(identifier.getUrl(), true);
    if (user == null) {
      try {
        user = _context.getDiscovery().discover(identifier, _context);
      } catch (IOException e) {
        if (!_identifierAsServer) throw e;
      }
      if (user == null) {
        if (!_identifierAsServer) return null;

        // user = new OpenIdUser(identifier.getId(), YadisDiscovery.IDENTIFIER_SELECT,
        // identifier.getUrl(), null);
        user =
            OpenIdUser.populate(
                identifier.getId(), YadisDiscovery.IDENTIFIER_SELECT, identifier.getUrl(), null);
      }

      _userCache.put(identifier.getUrl(), user);
    }

    _listener.onDiscovery(user, request);
    request.setAttribute(OpenIdUser.ATTR_NAME, user);
    return user;
  }
Example #2
0
 @PreDestroy
 void destroy() {
   logger.trace("Destroying event bus [{}] and removing all listeners", this);
   listeners.clear();
   if (parentEventBus != null) {
     parentEventBus.unsubscribe(parentListener);
   }
 }
Example #3
0
 @Override
 public void onEvent(final Event<Object> event) {
   logger.debug(
       "Propagating event [{}] from parent event bus [{}] to event bus [{}]",
       event,
       parentEventBus,
       ScopedEventBus.this);
   listeners.publish(event);
 }
Example #4
0
 @Override
 public <T> void subscribe(EventBusListener<T> listener, boolean includingPropagatingEvents) {
   logger.trace(
       "Subscribing listener [{}] to event bus [{}], includingPropagatingEvents = {}",
       listener,
       this,
       includingPropagatingEvents);
   listeners.add(new EventBusListenerWrapper(this, listener, includingPropagatingEvents));
 }
Example #5
0
 /**
  * Returns true if the user has succeeded authentication on his openid provider; The {@link
  * OpenIdUser} is persisted if successful.
  */
 public boolean verifyAuth(
     OpenIdUser user, HttpServletRequest request, HttpServletResponse response) throws Exception {
   if (_context.getAssociation().verifyAuth(user, getAuthParameters(request), _context)) {
     _listener.onAuthenticate(user, request);
     _manager.saveUser(user, request, response);
     return true;
   }
   return false;
 }
Example #6
0
 @Override
 public <T> void publish(String topic, Object sender, T payload) {
   logger.debug(
       "Publishing payload [{}] from sender [{}] on event bus [{}] in topic  [{}]",
       payload,
       sender,
       this,
       topic);
   listeners.publish(new Event<T>(this, sender, payload, topic));
 }
Example #7
0
 @Override
 public void unsubscribe(final Object listener) {
   logger.trace("Unsubscribing listener [{}] from event bus [{}]", listener, this);
   listeners.removeAll(
       new ListenerCollection.ListenerFilter() {
         @Override
         public boolean passes(ListenerCollection.Listener l) {
           return (l instanceof AbstractListenerWrapper)
               && (((AbstractListenerWrapper) l).getListenerTarget() == listener);
         }
       });
 }
Example #8
0
  /**
   * Return the current user, either an already authenticated one, or the one just discovered from
   * the <i>openid.identifier.parameter</i> (= "openid_identifier" by default).<br>
   * Returns <code>null</code> if the {@link Constants#OPENID_MODE} associated with the request is
   * set to {@link Constants.Mode#CANCEL} (in order to login under a different id), or if the
   * authentification is timed out.<br>
   * If returned user is <code>null</code> and {@link #isAuthResponse(HttpServletRequest)} is <code>
   * true</code> then we have an authentication timeout.
   *
   * @param request HttpServletRequest
   * @return user OpenIdUser
   */
  public OpenIdUser discover(HttpServletRequest request) throws Exception {
    OpenIdUser user = (OpenIdUser) request.getAttribute(OpenIdUser.ATTR_NAME);
    if (user == null) {
      System.err.println("vvvvvv RelyingParty: user NOT in request");
      user = _manager.getUser(request);
      String id = null;
      if (user != null) {
        System.err.println("vvvvvv RelyingParty: user in session");
        if (user.isAuthenticated()) {
          System.err.println("vvvvvv RelyingParty: user authenticated");
          _listener.onAccess(user, request);
          request.setAttribute(OpenIdUser.ATTR_NAME, user);
          return user;
        }
        System.err.println("vvvvvv RelyingParty: user NOT authenticated");
        if ((id = request.getParameter(_identifierParameter)) == null) {
          if (user.isAssociated()) {
            String mode = request.getParameter(Constants.OPENID_MODE);
            if (mode == null) return _automaticRedirect ? user : null;

            return Constants.Mode.CANCEL.equals(mode) ? null : user;
          }

          return user;
        } else if ((id = id.trim()).length() != 0) {
          Identifier identifier = Identifier.getIdentifier(id, _resolver, _context);
          if (identifier.isResolved()) {
            if (!identifier.getId().equals(user.getIdentifier())) {
              // new user or ... the user cancels authentication
              // and provides a different openid identifier
              return discover(identifier, request);
            }
          }
        }
      } else if ((id = request.getParameter(_identifierParameter)) != null
          && (id = id.trim()).length() != 0) {
        System.err.println(
            "vvvvvv RelyingParty: user NOT in session and parameter("
                + _identifierParameter
                + ") is NOT empty");
        Identifier identifier = Identifier.getIdentifier(id, _resolver, _context);
        if (identifier.isResolved()) return discover(identifier, request);
      } else {
        System.err.println(
            "vvvvvv RelyingParty: user NOT in session and parameter("
                + _identifierParameter
                + ") is empty");
      }
    }
    return user;
  }
Example #9
0
  public boolean authenticate(
      OpenIdUser user,
      HttpServletRequest request,
      HttpServletResponse response,
      String trustRoot,
      String realm,
      String returnTo)
      throws IOException {
    UrlEncodedParameterMap params = getAuthUrlMap(user, trustRoot, realm, returnTo);

    _listener.onPreAuthenticate(user, request, params);

    _manager.saveUser(user, request, response);

    _authRedirection.redirect(params, request, response);

    return true;
  }
Example #10
0
 /** Adds a custom listener. */
 public RelyingParty addListener(Listener listener) {
   _listener.addListener(listener);
   return this;
 }
Example #11
0
 @Override
 public <T> void publish(Object sender, T payload) {
   logger.debug(
       "Publishing payload [{}] from sender [{}] on event bus [{}]", payload, sender, this);
   listeners.publish(new Event<>(this, sender, payload));
 }