added keycloak authentification and account
This commit is contained in:
16
src/main/java/mops/gruppen2/Security/Account.java
Normal file
16
src/main/java/mops/gruppen2/Security/Account.java
Normal 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;
|
||||||
|
}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
package mops.gruppen2;
|
package mops.gruppen2.Security;
|
||||||
|
|
||||||
|
import mops.gruppen2.Security.SecurityConfig;
|
||||||
import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;
|
import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package mops.gruppen2;
|
package mops.gruppen2.Security;
|
||||||
|
|
||||||
import org.keycloak.KeycloakPrincipal;
|
import org.keycloak.KeycloakPrincipal;
|
||||||
import org.keycloak.adapters.springsecurity.KeycloakSecurityComponents;
|
import org.keycloak.adapters.springsecurity.KeycloakSecurityComponents;
|
||||||
@ -1,14 +1,33 @@
|
|||||||
package mops.gruppen2.controllers;
|
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.stereotype.Controller;
|
||||||
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
|
|
||||||
@RequestMapping("/gruppen2")
|
|
||||||
@Controller
|
@Controller
|
||||||
public class Gruppen2Controller {
|
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("/")
|
@GetMapping("/")
|
||||||
public String index() {
|
@Secured("ROLE_Orga")
|
||||||
|
public String index(KeycloakAuthenticationToken token, Model model) {
|
||||||
|
if (token != null) {
|
||||||
|
|
||||||
|
model.addAttribute("account", createAccountFromPrincipal(token));
|
||||||
|
|
||||||
|
}
|
||||||
return "index";
|
return "index";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,10 +9,6 @@ spring.datasource.username=root
|
|||||||
spring.datasource.password=geheim
|
spring.datasource.password=geheim
|
||||||
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
|
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.principal-attribute=preferred_username
|
||||||
keycloak.auth-server-url=https://keycloak.cs.hhu.de/auth
|
keycloak.auth-server-url=https://keycloak.cs.hhu.de/auth
|
||||||
keycloak.realm=MOPS
|
keycloak.realm=MOPS
|
||||||
|
|||||||
Reference in New Issue
Block a user