Created
February 6, 2017 07:41
-
-
Save verydapeng/c1c5f937644bafedba3f4ad549e21e78 to your computer and use it in GitHub Desktop.
OAuth Server - Spring Cloud Security
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.boot.SpringApplication; | |
import org.springframework.boot.autoconfigure.SpringBootApplication; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.context.annotation.Configuration; | |
import org.springframework.security.authentication.AuthenticationManager; | |
import org.springframework.security.core.authority.SimpleGrantedAuthority; | |
import org.springframework.security.core.userdetails.User; | |
import org.springframework.security.core.userdetails.UserDetailsService; | |
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; | |
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; | |
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer; | |
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer; | |
import org.springframework.security.oauth2.provider.ClientDetailsService; | |
import org.springframework.security.oauth2.provider.client.BaseClientDetails; | |
import java.util.Collections; | |
@SpringBootApplication | |
public class AuthServerApplication { | |
public static void main(String[] args) { | |
SpringApplication.run(AuthServerApplication.class, args); | |
} | |
} | |
@Configuration | |
@EnableAuthorizationServer | |
class OAuth2Config extends AuthorizationServerConfigurerAdapter { | |
@Autowired | |
private AuthenticationManager authenticationManager; | |
@Override | |
public void configure(AuthorizationServerEndpointsConfigurer endpoints) | |
throws Exception { | |
endpoints.authenticationManager(authenticationManager); | |
} | |
@Override | |
public void configure(AuthorizationServerSecurityConfigurer oauthServer) | |
throws Exception { | |
oauthServer.tokenKeyAccess("permitAll()"); | |
} | |
@Bean | |
UserDetailsService userDetailsService() { | |
return username -> new User(username, username + "pass", | |
Collections.singleton( | |
new SimpleGrantedAuthority("USER") | |
)); | |
} | |
@Bean | |
ClientDetailsService clientDetailsService() { | |
return clientId -> { | |
BaseClientDetails details = new BaseClientDetails(clientId, "", "openid", "password", "openid"); | |
details.setClientSecret(clientId + "secret"); | |
return details; | |
}; | |
} | |
} | |
/* | |
curl localhost:8080/oauth/token \ | |
-u acme:acmesecret \ | |
-d username=user \ | |
-d password=userpass \ | |
-d grant_type=password | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
<modelVersion>4.0.0</modelVersion> | |
<groupId>com.example</groupId> | |
<artifactId>auth-server</artifactId> | |
<version>0.0.1-SNAPSHOT</version> | |
<packaging>jar</packaging> | |
<name>auth-server</name> | |
<description>Demo project for Spring Boot</description> | |
<parent> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-parent</artifactId> | |
<version>1.5.1.RELEASE</version> | |
<relativePath/> <!-- lookup parent from repository --> | |
</parent> | |
<properties> | |
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | |
<java.version>1.8</java.version> | |
</properties> | |
<dependencies> | |
<dependency> | |
<groupId>org.springframework.cloud</groupId> | |
<artifactId>spring-cloud-starter-oauth2</artifactId> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-test</artifactId> | |
<scope>test</scope> | |
</dependency> | |
</dependencies> | |
<dependencyManagement> | |
<dependencies> | |
<dependency> | |
<groupId>org.springframework.cloud</groupId> | |
<artifactId>spring-cloud-dependencies</artifactId> | |
<version>Dalston.M1</version> | |
<type>pom</type> | |
<scope>import</scope> | |
</dependency> | |
</dependencies> | |
</dependencyManagement> | |
<build> | |
<plugins> | |
<plugin> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-maven-plugin</artifactId> | |
</plugin> | |
</plugins> | |
</build> | |
<repositories> | |
<repository> | |
<id>spring-milestones</id> | |
<name>Spring Milestones</name> | |
<url>https://repo.spring.io/milestone</url> | |
<snapshots> | |
<enabled>false</enabled> | |
</snapshots> | |
</repository> | |
</repositories> | |
</project> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment