Java Spring Boot - oauth

Java Spring Boot - oauth - Java - Programmation

Marsh Posté le 11-02-2019 à 14:39:50    

Bonjour,
 
Je sollicite une nouvelle fois votre aide :  
 
Je souhaite limiter mon authentification à un domaine spécifique (par exemple @mondomain.com) et
dans un deuxième temps limiter les users de mondomain.com. ( par exemple jean@mondomain.com est autorisé: pierre@mondomain.com pas autorisé).
 
Hey je pensais que un paramètre  d'api google pouvais le faire, mais apparemment je pense mal.
 
Pour le moment, j'ai une autorisation via google, j'ai google qui me cache mes autres nom de domaine, mais si je souhaite me connecté avec un autre domaine je peux.
 
Est ce que quelqu’un à déjà fait?
Ou une idée pour m'aiguiller ?
Merci beaucoup.
Raphael
 
application.properties
 
   

Code :
  1. security.oauth2.
  2.     security.oauth2.client.clientSecret =
  3.     security.oauth2.client.accessTokenUri  =  https://www.googleapis.com/oauth2/v3/token
  4.     security.oauth2.client.userAuthorizationUri  =  https://accounts.google.com/o/oauth [...] voteam.com
  5.     security.oauth2.client.tokenName = oauth_token
  6.     security.oauth2.client.authenticationScheme = query
  7.     security.oauth2.client.clientAuthenticationScheme = form
  8.     security.oauth2.client.scope = profile email
  9.     security.oauth2.client.registered-redirect-uri= http://127.0.0.1:8080/mypage1
  10.     security.oauth2.resource.userInfoUri  =  https://www.googleapis.com/userinfo/v2/me
  11.     security.oauth2.resource.preferTokenInfo = false


 
WebSecurityConfiguration.java
 
   

Code :
  1. package com.devoteam.presales.testspringsecu;
  2.     import org.springframework.context.annotation.Configuration;
  3.     import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
  4.     import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  5.     import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  6.     import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
  7.     @Configuration
  8.     @EnableOAuth2Sso
  9.     public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
  10.         @Override
  11.         protected void configure(HttpSecurity http) throws Exception {
  12.              http
  13.                      .csrf().disable()
  14.                      .authorizeRequests()
  15.                      .antMatchers("/", "/home" ).permitAll()
  16.                      .anyRequest().authenticated()
  17.                      .and()
  18.                      .formLogin()
  19.                      .loginPage("/login" )
  20.                      .permitAll()
  21.                      .and()
  22.                      .logout().logoutSuccessUrl("/" )
  23.                      .permitAll(); 
  24.         }
  25.     }


 
TestspringApplication.java
 
   

Code :
  1. package com.devoteam.presales.testspringsecu;
  2.     import java.security.Principal;
  3.     import org.springframework.boot.SpringApplication;
  4.     import org.springframework.boot.autoconfigure.SpringBootApplication;
  5.     import org.springframework.ui.Model;
  6.     import org.springframework.web.bind.annotation.RequestMapping;
  7.     import org.springframework.web.bind.annotation.RequestMethod;
  8.     import org.springframework.web.bind.annotation.RestController;
  9.     @SpringBootApplication
  10.     @RestController
  11.     public class TestspringsecuApplication {
  12.         public static void main(String[] args) {
  13.             SpringApplication.run(TestspringsecuApplication.class, args);
  14.         }
  15.         @RequestMapping(value = "/user" )
  16.         public Principal user(Principal principal) {
  17.             return principal;
  18.         }
  19.     }


Message édité par R-a-p-h2 le 11-02-2019 à 18:50:44
Reply

Marsh Posté le 11-02-2019 à 14:39:50   

Reply

Marsh Posté le 11-02-2019 à 17:53:28    

Tu devrais éviter de partager ton client id + secret.
 
Pour la restriction du domaine: https://stackoverflow.com/questions [...] omain-name
 
Pour la gestion des droits des utilisateurs en revanche, je dirais que ça doit être fait de ton côté.


---------------
click clack clunka thunk
Reply

Marsh Posté le 12-02-2019 à 11:46:09    

Hello,
Merci pour le client Id, je m'en étais même pas aperçu.
Alors le sujet que tu m'as donné j'avais vue, mais j'ai pas réussi de le mettre en place dans spring.
Pour moi Spring boot c'est un peu de la sorcellerie et j'arrive pas a mettre les mains dans le cambouis. Vu que pas mal de choses sont sensés être gérés automatiquement.
Je sais pas trop comment implémenter le hd=domain.
 
Merci de ton aide
 
 

Reply

Marsh Posté le 13-02-2019 à 15:13:31    

Re, pour info,  j'ai réglé mon problème avec un petit coup de javascript. j'ai récupéré le nom de domaine puis j'ai comparé. c'est pas super  beau mais ça fonctionne.
 

Code :
  1. $.get("/user", function(data) {
  2.     var domain = "devoteam.com";
  3.     if (data.userAuthentication.details.hd !== domain) {
  4.         $.post("/logout", function() {
  5.             $("#user" ).html('');
  6.             $(".unauthenticated" ).show();
  7.             $(".authenticated" ).hide();
  8.         });
  9.         window.location.replace("http://127.0.0.1:8080" );
  10.     }
  11.        $("#domain" ).html(data.userAuthentication.details.hd);
  12.     });

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed