怎么使用OAuth2.0開發(fā)認證中心和資源服務(wù)器接入

本篇內(nèi)容主要講解“怎么使用OAuth 2.0開發(fā)認證中心和資源服務(wù)器接入”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“怎么使用OAuth 2.0開發(fā)認證中心和資源服務(wù)器接入”吧!

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)山東,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

  • 基于 Spring Cloud OAuth ,用簡潔的方式搭建oauth的認證中心,

  • 關(guān)于oauth3 的授權(quán)模式 請直接參考 阮一峰 OAuth 2.0 的四種方式的詳細介紹

  • 項目版本核心說明

名稱版本
Spring Boot2.2.0.M5
Spring CloudHoxton.M2
Spring Cloud OAuth32.2.0.M2

開始配置認證服務(wù)器

maven 依賴引入

  • 這里只需要引入web、 cloud-oauth 即可,暫不引入spring cloud 其他組件

<dependencies>
	<dependency>
		<groupid>org.springframework.boot</groupid>
		<artifactid>spring-boot-starter-web</artifactid>
	</dependency>

	<dependency>
		<groupid>org.springframework.cloud</groupid>
		<artifactid>spring-cloud-starter-oauth3</artifactid>
	</dependency>
</dependencies>

配置web安全,攔截全部的請求

  • 獲取web 上下文AuthenticationManager 注入到spring中,方便后邊oauth server注入

  • 創(chuàng)建UserDetailsService的內(nèi)存實現(xiàn),注入一個測試用戶

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
	/**
	 * 必須注入 AuthenticationManager,不然oauth  無法處理四種授權(quán)方式
	 *
	 * @return
	 * @throws Exception
	 */
	@Bean
	@Override
	public AuthenticationManager authenticationManagerBean() throws Exception {
		return super.authenticationManagerBean();
	}

	/**
	 * 必須注入UserDetailsService ,不然oauth  密碼模式等死循環(huán)問題
	 *
	 * @return
	 */
	@Bean
	@Override
	protected UserDetailsService userDetailsService() {
		InMemoryUserDetailsManager userDetailsManager = new InMemoryUserDetailsManager();
		userDetailsManager.createUser(User.withUsername("lengleng").password("{noop}lengleng").authorities("USER").build());
		return userDetailsManager;
	}
}

配置oauth3 認證服務(wù)器

  • 配置clientId 信息,及其支持的授權(quán)模式,特別注意這里是五種包含一個刷新操作

@Configuration
@EnableAuthorizationServer
public class BigAuthServerConfiguration extends AuthorizationServerConfigurerAdapter {
	@Autowired
	private AuthenticationManager authenticationManager;
	@Autowired
	private UserDetailsService userDetailsService;

	@Override
	public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
		clients.inMemory()
				.withClient("appid")
				.secret("{noop}secret")
				.authorizedGrantTypes("password", "authorization_code", "client_credentials", "implicit", "refresh_token")
				.scopes("all");
	}

	@Override
	public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
		endpoints.authenticationManager(authenticationManager)
				.userDetailsService(userDetailsService);
	}

}

以上完成了認證服務(wù)器的功能

測試密碼模式

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'grant_type=password&amp;username=lengleng&amp;password=lengleng&amp;scope=all' "http://appid:secret@localhost:8764/oauth/token"

開始配置資源服務(wù)器

maven 依賴引入

  • 這里只需要引入web、 cloud-oauth 即可,暫不引入spring cloud 其他組件

<dependencies>
	<dependency>
		<groupid>org.springframework.boot</groupid>
		<artifactid>spring-boot-starter-web</artifactid>
	</dependency>

	<dependency>
		<groupid>org.springframework.cloud</groupid>
		<artifactid>spring-cloud-starter-oauth3</artifactid>
	</dependency>
</dependencies>

配置客戶端信息

security:
  oauth3:
    client:
      client-id: appid
      client-secret: secret
      scope: all
    resource: # 認證中心的check_token 接口地址
      token-info-uri: http://127.0.0.1:8764/oauth/check_token

應(yīng)用聲明資源服務(wù)器

  • @EnableResourceServer 即可完成接入

// 接入oauth3 ,聲明為資源服務(wù)器
@EnableResourceServer  
@EnableDiscoveryClient
@SpringBootApplication
public class BigUpmsServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(BigUpmsServerApplication.class, args);
	}

}

上文配置的認證服務(wù)器暴露check_token

  • 若不處理接口check_token 403

public class BigAuthServerConfiguration extends AuthorizationServerConfigurerAdapter {
	/**
	 * checkTokenAccess 權(quán)限設(shè)置為isAuthenticated,不然資源服務(wù)器 來請求403
	 * @param oauthServer
	 */
	@Override
	public void configure(AuthorizationServerSecurityConfigurer oauthServer) {
		oauthServer
				.allowFormAuthenticationForClients()
				.checkTokenAccess("isAuthenticated()");
	}
}

資源服務(wù)器demo 接口

@RestController
public class DemoController {

	@GetMapping("/info")
	public Authentication authentication(Authentication authentication) {
		return authentication;
	}
}

通過上文獲取的token 訪問測試接口

  • 獲取token

怎么使用OAuth 2.0開發(fā)認證中心和資源服務(wù)器接入

  • 通過token 請求測試接口獲取當(dāng)前用戶信息

怎么使用OAuth 2.0開發(fā)認證中心和資源服務(wù)器接入

到此,相信大家對“怎么使用OAuth 2.0開發(fā)認證中心和資源服務(wù)器接入”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

文章名稱:怎么使用OAuth2.0開發(fā)認證中心和資源服務(wù)器接入
本文來源:http://bm7419.com/article40/gospho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、品牌網(wǎng)站設(shè)計面包屑導(dǎo)航、建站公司網(wǎng)站排名、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)