Class GenericOAuth2Filter

java.lang.Object
org.springframework.web.filter.GenericFilterBean
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter
com.erudika.para.server.security.filters.GenericOAuth2Filter
All Implemented Interfaces:
javax.servlet.Filter, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationEventPublisherAware, org.springframework.context.EnvironmentAware, org.springframework.context.MessageSourceAware, org.springframework.core.env.EnvironmentCapable, org.springframework.web.context.ServletContextAware

public class GenericOAuth2Filter extends org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter
A filter that handles authentication requests to a generic OAuth 2.0 identity server.
Author:
Alex Bogdanovski [[email protected]]
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    The default filter mapping.
    static final String
    Second filter mapping.
    static final String
    Third filter mapping.
  • Constructor Summary

    Constructors
    Constructor
    Description
    GenericOAuth2Filter(String defaultFilterProcessesUrl)
    Default constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    org.springframework.security.core.Authentication
    attemptAuthentication(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
    Handles an authentication request.
    getOrCreateUser(App app, String accessToken)
    Calls an external API to get the user profile using a given access token.
    getOrCreateUser(App app, String accessToken, String alias)
    Calls an external API to get the user profile using a given access token.
    boolean
    If true, access tokens from the IDP are stored inside the user object and sent back to IDP for validation.
    boolean
    Validates the access token against the IDP server.

    Methods inherited from class org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter

    afterPropertiesSet, doFilter, getRememberMeServices, setAllowSessionCreation, setApplicationEventPublisher, setAuthenticationDetailsSource, setAuthenticationFailureHandler, setAuthenticationManager, setAuthenticationSuccessHandler, setContinueChainBeforeSuccessfulAuthentication, setFilterProcessesUrl, setMessageSource, setRememberMeServices, setRequiresAuthenticationRequestMatcher, setSecurityContextHolderStrategy, setSecurityContextRepository, setSessionAuthenticationStrategy

    Methods inherited from class org.springframework.web.filter.GenericFilterBean

    destroy, getEnvironment, getFilterConfig, init, setBeanName, setEnvironment, setServletContext

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • GenericOAuth2Filter

      public GenericOAuth2Filter(String defaultFilterProcessesUrl)
      Default constructor.
      Parameters:
      defaultFilterProcessesUrl - the url of the filter
  • Method Details

    • attemptAuthentication

      public org.springframework.security.core.Authentication attemptAuthentication(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws IOException
      Handles an authentication request.
      Specified by:
      attemptAuthentication in class org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter
      Parameters:
      request - HTTP request
      response - HTTP response
      Returns:
      an authentication object that contains the principal object if successful.
      Throws:
      IOException - ex
    • getOrCreateUser

      public UserAuthentication getOrCreateUser(App app, String accessToken) throws IOException
      Calls an external API to get the user profile using a given access token.
      Parameters:
      app - the app where the user will be created, use null for root app
      accessToken - access token
      Returns:
      UserAuthentication object or null if something went wrong
      Throws:
      IOException - ex if connection fails
    • getOrCreateUser

      public UserAuthentication getOrCreateUser(App app, String accessToken, String alias) throws IOException
      Calls an external API to get the user profile using a given access token.
      Parameters:
      app - the app where the user will be created, use null for root app
      accessToken - access token
      alias - alias
      Returns:
      UserAuthentication object or null if something went wrong
      Throws:
      IOException - ex if connection fails
    • isAccessTokenDelegationEnabled

      public boolean isAccessTokenDelegationEnabled(App app, User user)
      If true, access tokens from the IDP are stored inside the user object and sent back to IDP for validation.
      Parameters:
      app - an app object
      user - user
      Returns:
      false by default
    • isValidAccessToken

      public boolean isValidAccessToken(App app, User user)
      Validates the access token against the IDP server.
      Parameters:
      app - an app object
      user - the user object holding the tokens
      Returns:
      true if access token is valid