1

added keycloak authentification and account

This commit is contained in:
Mahgs
2020-03-04 15:06:12 +01:00
parent 4d29d93fd5
commit 4c1c26e817
5 changed files with 41 additions and 9 deletions

View File

@ -0,0 +1,16 @@
package mops.gruppen2.Security;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Set;
@Getter
@AllArgsConstructor
public class Account {
private final String name;
private final String email;
private final String givenname;
private final String familyname;
private final Set<String> roles;
}

View File

@ -1,5 +1,6 @@
package mops.gruppen2;
package mops.gruppen2.Security;
import mops.gruppen2.Security.SecurityConfig;
import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

View File

@ -1,4 +1,4 @@
package mops.gruppen2;
package mops.gruppen2.Security;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.adapters.springsecurity.KeycloakSecurityComponents;

View File

@ -1,14 +1,33 @@
package mops.gruppen2.controllers;
import mops.gruppen2.Security.Account;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping("/gruppen2")
@Controller
public class Gruppen2Controller {
private Account createAccountFromPrincipal(KeycloakAuthenticationToken token) {
KeycloakPrincipal principal = (KeycloakPrincipal) token.getPrincipal();
return new Account(
principal.getName(),
principal.getKeycloakSecurityContext().getIdToken().getEmail(),
principal.getKeycloakSecurityContext().getIdToken().getGivenName(),
principal.getKeycloakSecurityContext().getIdToken().getFamilyName(),
token.getAccount().getRoles());
}
@GetMapping("/")
public String index() {
@Secured("ROLE_Orga")
public String index(KeycloakAuthenticationToken token, Model model) {
if (token != null) {
model.addAttribute("account", createAccountFromPrincipal(token));
}
return "index";
}
}

View File

@ -9,10 +9,6 @@ spring.datasource.username=root
spring.datasource.password=geheim
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.security.user.name=root
spring.security.user.password=1234
spring.security.user.roles=ADMIN
keycloak.principal-attribute=preferred_username
keycloak.auth-server-url=https://keycloak.cs.hhu.de/auth
keycloak.realm=MOPS