Spring oauth not working with docker domains









up vote
0
down vote

favorite












I have my authorization server on ip 172.30.0.2, and a resource server on 172.30.0.3.



Inside the resource server's application.yml, I have:



security:
oauth2:
resource:
userInfoUri: http://172.30.0.2:8080/v1/user


with this configuration it works fine.
But if I use:



http://domain-management-query.domain-management-ms:8080/v1/user



I receive a 400 error. I receive the same error by issuing the command with wget form the command line from the resouceserver container.



How can I use docker domains instead of a prefixed ip?



I'm not using docker-compose for the domain-management-query.domain-management-ms, but this docker run command:



docker run -it --rm -p 8080:8080 --network=jacopetto -v $(pwd):/home/gradle/project --net-alias=domain-management-query.domain-management-ms uniroma1/j8-gradle-ms:1.0 /bin/sh



From the other service I can ping it and resolve it by hostname.




My configuration is from this book: https://github.com/carnellj/spmia-chapter7/ (Authentication-service + organization-service).



resource service:



@Configuration
public class ResourceServerConfiguration extends
ResourceServerConfigurerAdapter
@Override
public void configure(HttpSecurity http) throws Exception
http.cors().disable().authorizeRequests().anyRequest().authenticated();

@Bean
RequestDumperFilter requestDumperFilter()
return new RequestDumperFilter();




Authorization Service:



@Configuration
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter

@Autowired
private DataSource dataSource;

// The Authentication-
//ManagerBean is used
//by Spring Security to
//handle authentication.
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception
return super.authenticationManagerBean();


/*
The UserDetailsService is used by Spring
Security to handle user information that
will be returned the Spring Security.
*/
@Override
@Bean
public UserDetailsService userDetailsServiceBean() throws Exception
return super.userDetailsServiceBean();


/**
* The configure() method is
* where you’ll define users, their
* passwords, and their roles.
*/
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
auth.inMemoryAuthentication()
.withUser("john.carnell")
.password("nooppassword1")
.roles("USER")
.and()
.withUser("william.woodward")
.password("nooppassword2")
.roles("USER", "ADMIN")
;





AuthorizationServerConfigurerAdapter:



@Configuration
public class JWTOAuth2Config extends AuthorizationServerConfigurerAdapter

@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private UserDetailsService userDetailsService;


/**
* Which *clients* are going to register to the service.
*/
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception

clients.inMemory()
.withClient("jacopetto")
.secret("noopthisissecret")
.authorizedGrantTypes("refresh_token",
"password",
"client_credentials")
.scopes("webclient", "mobileclient");


@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception
endpoints
.authenticationManager(authenticationManager)

.userDetailsService(userDetailsService);

@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception

oauthServer.allowFormAuthenticationForClients();




I've also tried to shorten the hostname to dom-manag-query.d-m but seems not working.










share|improve this question



























    up vote
    0
    down vote

    favorite












    I have my authorization server on ip 172.30.0.2, and a resource server on 172.30.0.3.



    Inside the resource server's application.yml, I have:



    security:
    oauth2:
    resource:
    userInfoUri: http://172.30.0.2:8080/v1/user


    with this configuration it works fine.
    But if I use:



    http://domain-management-query.domain-management-ms:8080/v1/user



    I receive a 400 error. I receive the same error by issuing the command with wget form the command line from the resouceserver container.



    How can I use docker domains instead of a prefixed ip?



    I'm not using docker-compose for the domain-management-query.domain-management-ms, but this docker run command:



    docker run -it --rm -p 8080:8080 --network=jacopetto -v $(pwd):/home/gradle/project --net-alias=domain-management-query.domain-management-ms uniroma1/j8-gradle-ms:1.0 /bin/sh



    From the other service I can ping it and resolve it by hostname.




    My configuration is from this book: https://github.com/carnellj/spmia-chapter7/ (Authentication-service + organization-service).



    resource service:



    @Configuration
    public class ResourceServerConfiguration extends
    ResourceServerConfigurerAdapter
    @Override
    public void configure(HttpSecurity http) throws Exception
    http.cors().disable().authorizeRequests().anyRequest().authenticated();

    @Bean
    RequestDumperFilter requestDumperFilter()
    return new RequestDumperFilter();




    Authorization Service:



    @Configuration
    public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter

    @Autowired
    private DataSource dataSource;

    // The Authentication-
    //ManagerBean is used
    //by Spring Security to
    //handle authentication.
    @Override
    @Bean
    public AuthenticationManager authenticationManagerBean() throws Exception
    return super.authenticationManagerBean();


    /*
    The UserDetailsService is used by Spring
    Security to handle user information that
    will be returned the Spring Security.
    */
    @Override
    @Bean
    public UserDetailsService userDetailsServiceBean() throws Exception
    return super.userDetailsServiceBean();


    /**
    * The configure() method is
    * where you’ll define users, their
    * passwords, and their roles.
    */
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception
    auth.inMemoryAuthentication()
    .withUser("john.carnell")
    .password("nooppassword1")
    .roles("USER")
    .and()
    .withUser("william.woodward")
    .password("nooppassword2")
    .roles("USER", "ADMIN")
    ;





    AuthorizationServerConfigurerAdapter:



    @Configuration
    public class JWTOAuth2Config extends AuthorizationServerConfigurerAdapter

    @Autowired
    private AuthenticationManager authenticationManager;
    @Autowired
    private UserDetailsService userDetailsService;


    /**
    * Which *clients* are going to register to the service.
    */
    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception

    clients.inMemory()
    .withClient("jacopetto")
    .secret("noopthisissecret")
    .authorizedGrantTypes("refresh_token",
    "password",
    "client_credentials")
    .scopes("webclient", "mobileclient");


    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception
    endpoints
    .authenticationManager(authenticationManager)

    .userDetailsService(userDetailsService);

    @Override
    public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception

    oauthServer.allowFormAuthenticationForClients();




    I've also tried to shorten the hostname to dom-manag-query.d-m but seems not working.










    share|improve this question

























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I have my authorization server on ip 172.30.0.2, and a resource server on 172.30.0.3.



      Inside the resource server's application.yml, I have:



      security:
      oauth2:
      resource:
      userInfoUri: http://172.30.0.2:8080/v1/user


      with this configuration it works fine.
      But if I use:



      http://domain-management-query.domain-management-ms:8080/v1/user



      I receive a 400 error. I receive the same error by issuing the command with wget form the command line from the resouceserver container.



      How can I use docker domains instead of a prefixed ip?



      I'm not using docker-compose for the domain-management-query.domain-management-ms, but this docker run command:



      docker run -it --rm -p 8080:8080 --network=jacopetto -v $(pwd):/home/gradle/project --net-alias=domain-management-query.domain-management-ms uniroma1/j8-gradle-ms:1.0 /bin/sh



      From the other service I can ping it and resolve it by hostname.




      My configuration is from this book: https://github.com/carnellj/spmia-chapter7/ (Authentication-service + organization-service).



      resource service:



      @Configuration
      public class ResourceServerConfiguration extends
      ResourceServerConfigurerAdapter
      @Override
      public void configure(HttpSecurity http) throws Exception
      http.cors().disable().authorizeRequests().anyRequest().authenticated();

      @Bean
      RequestDumperFilter requestDumperFilter()
      return new RequestDumperFilter();




      Authorization Service:



      @Configuration
      public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter

      @Autowired
      private DataSource dataSource;

      // The Authentication-
      //ManagerBean is used
      //by Spring Security to
      //handle authentication.
      @Override
      @Bean
      public AuthenticationManager authenticationManagerBean() throws Exception
      return super.authenticationManagerBean();


      /*
      The UserDetailsService is used by Spring
      Security to handle user information that
      will be returned the Spring Security.
      */
      @Override
      @Bean
      public UserDetailsService userDetailsServiceBean() throws Exception
      return super.userDetailsServiceBean();


      /**
      * The configure() method is
      * where you’ll define users, their
      * passwords, and their roles.
      */
      @Override
      protected void configure(AuthenticationManagerBuilder auth) throws Exception
      auth.inMemoryAuthentication()
      .withUser("john.carnell")
      .password("nooppassword1")
      .roles("USER")
      .and()
      .withUser("william.woodward")
      .password("nooppassword2")
      .roles("USER", "ADMIN")
      ;





      AuthorizationServerConfigurerAdapter:



      @Configuration
      public class JWTOAuth2Config extends AuthorizationServerConfigurerAdapter

      @Autowired
      private AuthenticationManager authenticationManager;
      @Autowired
      private UserDetailsService userDetailsService;


      /**
      * Which *clients* are going to register to the service.
      */
      @Override
      public void configure(ClientDetailsServiceConfigurer clients) throws Exception

      clients.inMemory()
      .withClient("jacopetto")
      .secret("noopthisissecret")
      .authorizedGrantTypes("refresh_token",
      "password",
      "client_credentials")
      .scopes("webclient", "mobileclient");


      @Override
      public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception
      endpoints
      .authenticationManager(authenticationManager)

      .userDetailsService(userDetailsService);

      @Override
      public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception

      oauthServer.allowFormAuthenticationForClients();




      I've also tried to shorten the hostname to dom-manag-query.d-m but seems not working.










      share|improve this question















      I have my authorization server on ip 172.30.0.2, and a resource server on 172.30.0.3.



      Inside the resource server's application.yml, I have:



      security:
      oauth2:
      resource:
      userInfoUri: http://172.30.0.2:8080/v1/user


      with this configuration it works fine.
      But if I use:



      http://domain-management-query.domain-management-ms:8080/v1/user



      I receive a 400 error. I receive the same error by issuing the command with wget form the command line from the resouceserver container.



      How can I use docker domains instead of a prefixed ip?



      I'm not using docker-compose for the domain-management-query.domain-management-ms, but this docker run command:



      docker run -it --rm -p 8080:8080 --network=jacopetto -v $(pwd):/home/gradle/project --net-alias=domain-management-query.domain-management-ms uniroma1/j8-gradle-ms:1.0 /bin/sh



      From the other service I can ping it and resolve it by hostname.




      My configuration is from this book: https://github.com/carnellj/spmia-chapter7/ (Authentication-service + organization-service).



      resource service:



      @Configuration
      public class ResourceServerConfiguration extends
      ResourceServerConfigurerAdapter
      @Override
      public void configure(HttpSecurity http) throws Exception
      http.cors().disable().authorizeRequests().anyRequest().authenticated();

      @Bean
      RequestDumperFilter requestDumperFilter()
      return new RequestDumperFilter();




      Authorization Service:



      @Configuration
      public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter

      @Autowired
      private DataSource dataSource;

      // The Authentication-
      //ManagerBean is used
      //by Spring Security to
      //handle authentication.
      @Override
      @Bean
      public AuthenticationManager authenticationManagerBean() throws Exception
      return super.authenticationManagerBean();


      /*
      The UserDetailsService is used by Spring
      Security to handle user information that
      will be returned the Spring Security.
      */
      @Override
      @Bean
      public UserDetailsService userDetailsServiceBean() throws Exception
      return super.userDetailsServiceBean();


      /**
      * The configure() method is
      * where you’ll define users, their
      * passwords, and their roles.
      */
      @Override
      protected void configure(AuthenticationManagerBuilder auth) throws Exception
      auth.inMemoryAuthentication()
      .withUser("john.carnell")
      .password("nooppassword1")
      .roles("USER")
      .and()
      .withUser("william.woodward")
      .password("nooppassword2")
      .roles("USER", "ADMIN")
      ;





      AuthorizationServerConfigurerAdapter:



      @Configuration
      public class JWTOAuth2Config extends AuthorizationServerConfigurerAdapter

      @Autowired
      private AuthenticationManager authenticationManager;
      @Autowired
      private UserDetailsService userDetailsService;


      /**
      * Which *clients* are going to register to the service.
      */
      @Override
      public void configure(ClientDetailsServiceConfigurer clients) throws Exception

      clients.inMemory()
      .withClient("jacopetto")
      .secret("noopthisissecret")
      .authorizedGrantTypes("refresh_token",
      "password",
      "client_credentials")
      .scopes("webclient", "mobileclient");


      @Override
      public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception
      endpoints
      .authenticationManager(authenticationManager)

      .userDetailsService(userDetailsService);

      @Override
      public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception

      oauthServer.allowFormAuthenticationForClients();




      I've also tried to shorten the hostname to dom-manag-query.d-m but seems not working.







      docker spring-boot spring-oauth2






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 11 at 15:06

























      asked Nov 11 at 13:10









      Federico Ponzi

      1,22632243




      1,22632243






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          As it's is displayed in that project, in docker/common you'll find docker-compose and its environment variables are called like for example:



          authservice:
          ...

          customservice:
          image: data/customservice
          ports:
          - "7777:7777"
          environment:
          PROFILE: "default"
          SERVER_PORT: "7777"
          AUTHSERVER_URI: "http://authservice:8080/auth/user"


          Has to be the same authservice name.






          share|improve this answer






















          • thanks for the answer! I'm aware of that, but should have specified (I've edited the question). I think my problem is somehow related to this: stackoverflow.com/questions/51632753/…
            – Federico Ponzi
            Nov 11 at 15:08










          • Oh right! You are using it in production with host name so you can create a network stuffs. Let me share this link in order to do that as reference andrewtarry.com/docker_compose
            – Jonathan Johx
            Nov 11 at 18:01










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53249063%2fspring-oauth-not-working-with-docker-domains%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          0
          down vote













          As it's is displayed in that project, in docker/common you'll find docker-compose and its environment variables are called like for example:



          authservice:
          ...

          customservice:
          image: data/customservice
          ports:
          - "7777:7777"
          environment:
          PROFILE: "default"
          SERVER_PORT: "7777"
          AUTHSERVER_URI: "http://authservice:8080/auth/user"


          Has to be the same authservice name.






          share|improve this answer






















          • thanks for the answer! I'm aware of that, but should have specified (I've edited the question). I think my problem is somehow related to this: stackoverflow.com/questions/51632753/…
            – Federico Ponzi
            Nov 11 at 15:08










          • Oh right! You are using it in production with host name so you can create a network stuffs. Let me share this link in order to do that as reference andrewtarry.com/docker_compose
            – Jonathan Johx
            Nov 11 at 18:01














          up vote
          0
          down vote













          As it's is displayed in that project, in docker/common you'll find docker-compose and its environment variables are called like for example:



          authservice:
          ...

          customservice:
          image: data/customservice
          ports:
          - "7777:7777"
          environment:
          PROFILE: "default"
          SERVER_PORT: "7777"
          AUTHSERVER_URI: "http://authservice:8080/auth/user"


          Has to be the same authservice name.






          share|improve this answer






















          • thanks for the answer! I'm aware of that, but should have specified (I've edited the question). I think my problem is somehow related to this: stackoverflow.com/questions/51632753/…
            – Federico Ponzi
            Nov 11 at 15:08










          • Oh right! You are using it in production with host name so you can create a network stuffs. Let me share this link in order to do that as reference andrewtarry.com/docker_compose
            – Jonathan Johx
            Nov 11 at 18:01












          up vote
          0
          down vote










          up vote
          0
          down vote









          As it's is displayed in that project, in docker/common you'll find docker-compose and its environment variables are called like for example:



          authservice:
          ...

          customservice:
          image: data/customservice
          ports:
          - "7777:7777"
          environment:
          PROFILE: "default"
          SERVER_PORT: "7777"
          AUTHSERVER_URI: "http://authservice:8080/auth/user"


          Has to be the same authservice name.






          share|improve this answer














          As it's is displayed in that project, in docker/common you'll find docker-compose and its environment variables are called like for example:



          authservice:
          ...

          customservice:
          image: data/customservice
          ports:
          - "7777:7777"
          environment:
          PROFILE: "default"
          SERVER_PORT: "7777"
          AUTHSERVER_URI: "http://authservice:8080/auth/user"


          Has to be the same authservice name.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 11 at 17:52

























          answered Nov 11 at 15:03









          Jonathan Johx

          1




          1











          • thanks for the answer! I'm aware of that, but should have specified (I've edited the question). I think my problem is somehow related to this: stackoverflow.com/questions/51632753/…
            – Federico Ponzi
            Nov 11 at 15:08










          • Oh right! You are using it in production with host name so you can create a network stuffs. Let me share this link in order to do that as reference andrewtarry.com/docker_compose
            – Jonathan Johx
            Nov 11 at 18:01
















          • thanks for the answer! I'm aware of that, but should have specified (I've edited the question). I think my problem is somehow related to this: stackoverflow.com/questions/51632753/…
            – Federico Ponzi
            Nov 11 at 15:08










          • Oh right! You are using it in production with host name so you can create a network stuffs. Let me share this link in order to do that as reference andrewtarry.com/docker_compose
            – Jonathan Johx
            Nov 11 at 18:01















          thanks for the answer! I'm aware of that, but should have specified (I've edited the question). I think my problem is somehow related to this: stackoverflow.com/questions/51632753/…
          – Federico Ponzi
          Nov 11 at 15:08




          thanks for the answer! I'm aware of that, but should have specified (I've edited the question). I think my problem is somehow related to this: stackoverflow.com/questions/51632753/…
          – Federico Ponzi
          Nov 11 at 15:08












          Oh right! You are using it in production with host name so you can create a network stuffs. Let me share this link in order to do that as reference andrewtarry.com/docker_compose
          – Jonathan Johx
          Nov 11 at 18:01




          Oh right! You are using it in production with host name so you can create a network stuffs. Let me share this link in order to do that as reference andrewtarry.com/docker_compose
          – Jonathan Johx
          Nov 11 at 18:01

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53249063%2fspring-oauth-not-working-with-docker-domains%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Top Tejano songwriter Luis Silva dead of heart attack at 64

          ReactJS Fetched API data displays live - need Data displayed static

          Evgeni Malkin