SpringCloud OAuth2單點登錄

2023-12-05 17:18 更新

<

這是一個具有HTTP Basic身份驗證和單個用戶帳戶的Spring Cloud“ Hello World”應用程序:

app.groovy。 

@Grab('spring-boot-starter-security')
@Controller
class Application {

  @RequestMapping('/')
  String home() {
    'Hello World'
  }

}

您可以使用spring run app.groovy運行它,并在日志中查看密碼(用戶名是“ user”)。到目前為止,這只是Spring Boot應用的默認設(shè)置。

這是帶有OAuth2 SSO的Spring Cloud應用:

app.groovy。 

@Controller
@EnableOAuth2Sso
class Application {

  @RequestMapping('/')
  String home() {
    'Hello World'
  }

}

指出不同?該應用程序?qū)嶋H上將與上一個應用程序完全相同,因為它尚不知道它是OAuth2憑證。

您可以很容易地在github中注冊一個應用程序,因此,如果要在自己的域上使用生產(chǎn)應用程序,請嘗試。如果您愿意在localhost:8080上進行測試,請在應用程序配置中設(shè)置以下屬性:

application.yml。 

security:
  oauth2:
    client:
      clientId: bd1c0a783ccdd1c9b9e4
      clientSecret: 1a9030fbca47a5b2c28e92f19050bb77824b5ad1
      accessTokenUri: https://github.com/login/oauth/access_token
      userAuthorizationUri: https://github.com/login/oauth/authorize
      clientAuthenticationScheme: form
    resource:
      userInfoUri: https://api.github.com/user
      preferTokenInfo: false

運行上面的應用程序,它將重定向到github進行授權(quán)。如果您已經(jīng)登錄github,您甚至不會注意到它已通過身份驗證。僅當您的應用程序在端口8080上運行時,這些憑據(jù)才有效。

要限制客戶端獲得訪問令牌時要求的范圍,可以設(shè)置security.oauth2.client.scope(逗號分隔或YAML中的數(shù)組)。默認情況下,作用域為空,并且由授權(quán)服務器決定默認值是什么,通常取決于它所擁有的客戶端注冊中的設(shè)置。

上面的示例都是Groovy腳本。如果要用Java(或Groovy)編寫相同的代碼,則需要在類路徑中添加Spring Security OAuth2(例如,在此處查看 示例)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號