javascript
一个具有Spring Boot,Spring Security和Stormpath的简单Web应用程序-15分钟
建筑物身份管理,包括身份驗(yàn)證和授權(quán)? 嘗試Stormpath! 我們的REST API和強(qiáng)大的Java SDK支持可以消除您的安全風(fēng)險(xiǎn),并且可以在幾分鐘內(nèi)實(shí)現(xiàn)。 注冊 ,再也不會(huì)建立auth了!
更新 :我們最近發(fā)布了對(duì)Stormpath Spring Security集成的修訂。 您不再需要從特殊的Stormpath安全配置器適配器繼承。 而是使用Stormpath DSL(特定于域的語言)。 看下面看這有多容易。
?在Stormpath,我們?Spring Boot。 構(gòu)建豐富的Java Web應(yīng)用程序變得如此輕松有趣。
我們對(duì)最新的Java SDK版本感到非常興奮,其中包括對(duì)我們的Spring Security和Spring Boot支持的重大改進(jìn)。
如果您以前曾經(jīng)構(gòu)建過Web應(yīng)用程序,那么您將知道所有“用戶資料”都是您的頭疼。 Stormpath為開發(fā)人員提供了開箱即用的所有“用戶資料”,因此您可以繼續(xù)真正關(guān)心的是您的應(yīng)用程序! 到本教程完成時(shí)(我保證不到15分鐘),您將擁有一個(gè)可以正常運(yùn)行的Spring Boot Web應(yīng)用程序,該應(yīng)用程序可以通過Spring Security保護(hù)用戶對(duì)受限路徑的訪問,并得到Stormpath的支持。
我們將專注于我們的Spring Boot集成,以推出一個(gè)簡單的Spring Boot Web應(yīng)用程序,該應(yīng)用程序具有完整的用戶注冊和登錄系統(tǒng),并具有以下功能:
- 登錄和注冊頁面
- 密碼重置工作流程
- 根據(jù)組成員身份限制訪問
- 能夠輕松啟用Java庫中的其他Stormpath功能(API身份驗(yàn)證,SSO,社交登錄等)的功能
在本演示中,我們將使用stormpath-default-spring-boot-starter 。 它的模塊化設(shè)計(jì)在Spring Boot 1.3.0和Spring Security 4.0.3以及Spring Boot WebMVC和Thymeleaf模板引擎中得到了體現(xiàn)。 我將使用Mac,終端應(yīng)用程序和IntelliJ IDE。
本教程的所有代碼都可以在這里找到。
在整個(gè)文章中,您可以通過單擊Deploy to Heroku按鈕來查看示例代碼。 您需要做的就是注冊一個(gè)免費(fèi)的Heroku帳戶。
什么是暴風(fēng)雨?
Stormpath是一項(xiàng)API服務(wù),允許開發(fā)人員創(chuàng)建,編輯和安全地存儲(chǔ)
用戶帳戶和用戶帳戶數(shù)據(jù),并將它們與一個(gè)或多個(gè)應(yīng)用程序連接。 我們的API使您能夠:
- 驗(yàn)證和授權(quán)用戶
- 存儲(chǔ)有關(guān)您的用戶的數(shù)據(jù)
- 執(zhí)行密碼和基于社交的登錄
- 發(fā)送密碼重置消息
- 發(fā)行基于API的Web應(yīng)用程序的API密鑰
- 以及更多! 查看我們的產(chǎn)品文檔
簡而言之:我們使用戶帳戶管理變得更加輕松,安全和更多
可擴(kuò)展性比您可能習(xí)慣的高。
準(zhǔn)備開始了嗎? 在此處注冊免費(fèi)的開??發(fā)者帳戶。
啟動(dòng)您的Spring Boot項(xiàng)目
有您的Stormpath開發(fā)者帳戶? 大! 讓我們開始吧…
無論你是一個(gè)Maven 的Maven或搖籃克里特 ,讓您的項(xiàng)目設(shè)置是一個(gè)單元。
這是一個(gè)以pom.xml開頭的文件:
<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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.stormpath.sample</groupId><artifactId>stormpath-spring-boot-spring-security-tutorial</artifactId><version>0.1.0</version><name>Spring Boot Spring Security Stormpath Tutorial</name><description>A simple Spring Boot Web MVC application with Spring Security and out-of-the-box login and self-service screens!</description><dependencies><dependency><groupId>com.stormpath.spring</groupId><artifactId>stormpath-default-spring-boot-starter</artifactId><version>1.0.RC6</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>1.3.0.RELEASE</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>而且,這是一個(gè)以以下內(nèi)容開頭的build.gradle文件:
buildscript {repositories {mavenCentral()}dependencies {classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.0.RELEASE")} }apply plugin: 'java' apply plugin: 'maven' apply plugin: 'spring-boot'group = 'com.stormpath' version = '0.1.0'repositories {mavenCentral() }dependencies {compile group: 'com.stormpath.spring', name: 'stormpath-default-spring-boot-starter', version:'1.0.RC6' }您可能會(huì)注意到,對(duì)于Maven和Gradle來說,都存在一個(gè)依賴關(guān)系: stormpath-default-spring-boot-starter 。 對(duì)。 而已。 正如您將在下面看到的那樣,一個(gè)依賴項(xiàng)立即為您提供了所有的Spring Boot,Spring Security和Stormpath魔術(shù)。
收集您的API憑證和應(yīng)用程序參考
應(yīng)用程序和Stormpath之間的連接通過“ API密鑰對(duì)”進(jìn)行保護(hù)。 您將提供這些密鑰
到您的Web應(yīng)用程序,并且在與Stormpath通信時(shí)將使用它們。 您可以從管理控制臺(tái)下載API密鑰對(duì)。 登錄后,您可以從主頁下載API密鑰對(duì),它將下載apiKey.properties文件-我們稍后將使用它。
在管理控制臺(tái)中時(shí),您要獲取默認(rèn)Stormpath應(yīng)用程序的href。 在Stormpath中,Application對(duì)象用于將Web應(yīng)用程序鏈接到Stormpath中的用戶存儲(chǔ)。 所有新的開發(fā)人員帳戶都有一個(gè)名為“我的應(yīng)用程序”的應(yīng)用程序。 在管理控制臺(tái)中單擊“應(yīng)用程序”,然后單擊“我的應(yīng)用程序”。 在該頁面上,您將看到應(yīng)用程序的Href。 復(fù)制它-我們稍后將需要它。
編寫Spring Boot應(yīng)用程序
該部分的代碼可以在代碼庫的LockedDown標(biāo)記中找到。
我們需要三個(gè)小的Java類和一個(gè)html模板來啟動(dòng)Webapp的第一個(gè)版本。 它們足夠小,我會(huì)把它們放在這里。 讓我們開始吧!
Spring Boot應(yīng)用程序入口點(diǎn)
所有的Spring Boot應(yīng)用程序都有一個(gè)入口點(diǎn),其作用與普通的Java程序相同。 它具有main方法和所有內(nèi)容。
這是Application.java :
@SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);} }6行代碼(包括@SpringBootApplication批注)拉開了序幕。
Spring安全配置
默認(rèn)情況下(以及最佳安全實(shí)踐),Spring Security會(huì)鎖定整個(gè)應(yīng)用程序。 它將其鎖定到甚至無法訪問的地步! 盡管這符合最佳安全性實(shí)踐,但并不是很有用。 另外,我們需要將Spring Security和Stormpath掛鉤。 這將我們帶到我們的SpringSecurityWebAppConfig.java :
@Configuration public class SpringSecurityWebAppConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.apply(stormpath());} }@Configuration注釋使Spring Boot將該類實(shí)例化為配置。 .apply(stormpath())將所有Stormpath優(yōu)點(diǎn)(身份驗(yàn)證和授權(quán)工作流程)掛接到Spring Security中。
因?yàn)閏onfigure方法中沒有進(jìn)一步的配置,所以我們?nèi)匀粫?huì)看到將所有內(nèi)容鎖定的默認(rèn)行為。 但是,我們將看到默認(rèn)的Stormpath流程,而不是默認(rèn)的Spring Security身份驗(yàn)證流程。 也就是說,嘗試瀏覽到應(yīng)用程序中的任何路徑將導(dǎo)致重定向到Stormpath login頁面。
因此,一個(gè)1行的方法調(diào)用就可以保證安全!
Spring WebMVC緊密聯(lián)系在一起
我們上面的安全性配置可確保保護(hù)應(yīng)用程序中的所有路徑。
控制器確定請求的路徑如何定向以顯示哪些模板。
這是我們的HelloController.java :
@Controller public class HelloController {@RequestMapping("/")String home() {return "home";} }@Controller注釋@Controller Spring Boot這是一個(gè)控制器。 我們在第3行/上定義了一個(gè)路徑。 第5行返回Thymeleaf模板,命名為home 。
7行代碼,我們有模型-視圖-控制器(MVC)路由。
帶我們
默認(rèn)情況下,Thymeleaf模板引擎將在類路徑中名為templates的文件夾中查找從控制器返回的templates 。 它還將尋找.html的默認(rèn)擴(kuò)展名。
因此,當(dāng)上述控制器返回"home" ,Thymeleaf將在resources/templates/home.html找到模板。
讓我們看一下home.html文件:
<html xmlns:th="http://www.thymeleaf.org"><head><!--/*/ <th:block th:include="fragments/head :: head"/> /*/--></head><body><div class="container-fluid"><div class="row"><div class="box col-md-6 col-md-offset-3"><div class="stormpath-header"><img src="http://stormpath.com/images/template/logo-nav.png"/></div><h1 th:inline="text">Hello, [[${account.fullName}]]!</h1><a th:href="@{/logout}" class="btn btn-danger">Logout</a></div></div></div></body> </html>第1行為Thymeleaf設(shè)置了th名稱空間。
第3行看起來像html / xml注釋。 但是,這是Thymeleaf接受的指令,以在此模板中包含片段。 該片段位于: resources/templates/fragments/head.html 。 該片段包含所有要掛接到Bootstrap樣式中的視圖的設(shè)置。
第13和14行是操作所在的位置。 由于應(yīng)用程序中的每條路徑均已鎖定,因此我們知道進(jìn)入此頁面的唯一方法是登錄后。Stormpath的神奇之處在于,一旦登錄, account對(duì)象就始終在您的視圖范圍內(nèi)。 第13行顯示已登錄用戶的全名。 第14行提供了單擊后注銷的鏈接。
有關(guān)使用Thymeleaf模板的更多信息,請單擊此處 。
讓我們火起來!
創(chuàng)建一個(gè)Stormpath帳戶,15行Java代碼和19行HTML模板代碼(其中3行非常重要),使我們到達(dá)了受Spring Security保護(hù)并受Stormpath支持的功能齊全的Spring Boot WebMVC應(yīng)用程序的地步。
如果您以前將apiKey.properties文件存儲(chǔ)在標(biāo)準(zhǔn)位置: ~/.stormpath/apiKey.properties并且只有為您創(chuàng)建的默認(rèn)Stormpath應(yīng)用程序,則無需其他配置即可啟動(dòng)該應(yīng)用程序。
這是Maven的方式:
mvn clean package mvn spring-boot:run注意:由于存在repackage執(zhí)行, spring-boot-maven-plugin還會(huì)創(chuàng)建一個(gè)uber-jar。 您可以通過運(yùn)行java來行使相同的代碼:
mvn clean package java -jar target/*.jar這是Gradle的方式:
gradle clean build java -jar build/libs/*.jar真? 是嗎 對(duì)!
您可以瀏覽到http:// localhost:8080 /并查看其運(yùn)行情況。
如果您將apiKey.properties文件存儲(chǔ)在其他位置,或者定義了其他Stormpath應(yīng)用程序怎么辦? 沒問題!
還記得您之前保存的Application Href嗎? 我們現(xiàn)在將使用它。
這是Maven的方式:
mvn clean package STORMPATH_API_KEY_FILE=~/.stormpath/apiKey.properties \ STORMPATH_APPLICATION_HREF=https://api.stormpath.com/v1/applications/4YHCurbtcaFC4TKKsd3AYQ \ mvn spring-boot:run這是Gradle的方式:
gradle clean build STORMPATH_API_KEY_FILE=~/.stormpath/apiKey.properties \ STORMPATH_APPLICATION_HREF=https://api.stormpath.com/v1/applications/4YHCurbtcaFC4TKKsd3AYQ \ java -jar build/libs/*.jar通過將STORMPATH_API_KEY_FILE和STORMPATH_APPLICATION_HREF環(huán)境變量添加到命令行,我們可以輕松地告訴我們的應(yīng)用程序在哪里可以找到api鍵以及要使用哪個(gè)Stormpath應(yīng)用程序。
Stormpath Java SDK具有極其靈活的配置機(jī)制。 當(dāng)我們開始限制Stormpath Group成員對(duì)您的應(yīng)用程序的訪問時(shí),我們將在下面看到更多內(nèi)容。
使用Spring Security完善的訪問控制
該部分的代碼可以在代碼庫的BasicAccessControl標(biāo)記中找到。
在上一節(jié)中,我們創(chuàng)建了一個(gè)緊密鎖定的應(yīng)用程序。 每個(gè)路徑(包括/ )都要求您首先登錄。
也許您想要一個(gè)可公開訪問的主頁。 也許您希望網(wǎng)站的某些部分可以被任何經(jīng)過身份驗(yàn)證的用戶訪問,而站點(diǎn)的另一部分則只能包含屬于特定組的成員。
我們將在本節(jié)中探索那些細(xì)粒度的控件。
我們將從允許公眾訪問主頁開始。 用戶仍然必須進(jìn)行身份驗(yàn)證才能訪問任何其他頁面。
Spring安全:門口的保鏢
還記得以前的空SpringSecurityWebAppConfig.java嗎? 我們現(xiàn)在將添加一些東西:
@Configuration public class SpringSecurityWebAppConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.apply(stormpath()).and().authorizeRequests().antMatchers("/").permitAll();} }Spring Security提供了一個(gè)流暢的界面來提供訪問規(guī)則。
在上面的5-8行中,我們正在建立一個(gè)規(guī)則集,該規(guī)則集關(guān)于Spring Security如何允許訪問我們的應(yīng)用程序。
您可以用簡單的英語來表示:
Permit anyone to go to the front door Ensure that they've authenticated for anything else我們指定的規(guī)則優(yōu)先于鎖定所有內(nèi)容的默認(rèn)行為。
讓我們也更新我們的home.html模板:
<html xmlns:th="http://www.thymeleaf.org"><head><!--/*/ <th:block th:include="fragments/head :: head"/> /*/--></head><body><div class="container-fluid"><div class="row"><div class="box col-md-6 col-md-offset-3"><div class="stormpath-header"><img src="http://stormpath.com/images/template/logo-nav.png"/></div><!--/* displayed if account IS NOT null, indicating that the user IS logged in */--><div th:if="${account}"><h1 th:inline="text">Hello, [[${account.fullName}]]!</h1><a href="/restricted" class="btn btn-primary">Restricted</a><a th:href="@{/logout}" class="btn btn-danger">Logout</a></div><!--/* displayed if account IS null, indicating that the user IS NOT logged in */--><div th:unless="${account}"><h1>Who are you?</h1><a href="/restricted" class="btn btn-primary">Restricted</a></div></div></div></div></body> </html>請注意,我們現(xiàn)在有兩個(gè)不同的部分。 第一個(gè)從第13行開始,如果用戶已登錄,則顯示第一個(gè)。
如果用戶未登錄,則顯示從第20行開始的第二部分。
這是正在運(yùn)行的Thymeleaf模板。 它提供了非常強(qiáng)大的控件,可有條件地顯示模板的各個(gè)部分。
在進(jìn)行任何其他更改之前,讓我們在這里暫停并像以前一樣啟動(dòng)應(yīng)用程序。
當(dāng)瀏覽到http:// localhost:8080時(shí) ,您將看到home模板的未經(jīng)身份驗(yàn)證的版本。
單擊“ Restricted按鈕,您將按預(yù)期重定向到login表單。 驗(yàn)證之后,您將進(jìn)入404頁面,因?yàn)槲覀兩形炊x受限頁面。
讓我們對(duì)其進(jìn)行設(shè)置以完成本節(jié)。
定義受限頁面就像在我們的控制器中添加路線并創(chuàng)建要顯示的模板一樣容易。 這是更新的HelloController.java :
@Controller public class HelloController {@RequestMapping("/")String home() {return "home";}@RequestMapping("/restricted")String restricted() {return "restricted";} }并且,這是一個(gè)新的restricted.html模板:
<html xmlns:th="http://www.thymeleaf.org"><head><!--/*/ <th:block th:include="fragments/head :: head"/> /*/--></head><body><div class="container-fluid"><div class="row"><div class="box col-md-6 col-md-offset-3"><div class="stormpath-header"><img src="http://stormpath.com/images/template/logo-nav.png"/></div><h1 th:inline="text">[[${account.fullName}]], You are allowed here.</h1><a href="/" class="btn btn-primary">Go Home</a></div></div></div></body> </html>注意我們?nèi)绾沃匦率褂胔ead片段為該模板提供Bootstrap樣式。
再次重新啟動(dòng)該應(yīng)用程序,您將獲得完整的體驗(yàn)。 記下主頁如何更改,具體取決于您是否登錄。
通過組成員身份進(jìn)行Spring Security訪問控制
該部分的代碼可以在代碼存儲(chǔ)庫的GroupAccessControl標(biāo)記中找到。
Spring Security提供了一組注釋和一種豐富的表達(dá)語言,用于控制對(duì)應(yīng)用程序中方法的訪問。 @PreAuthorize是最常用的Spring Security批注。 并且,最常用的SpringEL表達(dá)式包括hasRole 。
Stormpath集成了將Stormpath組連接到Spring Security角色的機(jī)制。
讓我們看一下代碼,然后將其分解。 我們將添加一項(xiàng)新服務(wù),以限制組成員身份的訪問。 這是AdminService :
@Service public class AdminService {@PreAuthorize("hasRole(@roles.ADMIN)")public boolean ensureAdmin() {return true;} }上面的第3行是關(guān)鍵。 注釋和SpringEL表達(dá)式可以用簡單的英語表示為:
Before this method is even entered, check to see that user is authenticated and is a member of the ADMIN groupcheck to see that user is authenticated的check to see that user is authenticated可能并不明顯。 發(fā)生的是, @PreAuthorize檢查只能在經(jīng)過身份驗(yàn)證的用戶上執(zhí)行。 Spring Security非常聰明,可以在檢查用戶是否是指定組的成員之前檢查用戶是否已登錄。
讓我們深入探討上面的Spring Expression Language。 Spring Security在哪里尋找@roles.ADMIN ? @符號(hào)是特殊的–它標(biāo)識(shí)Java Bean。 在這種情況下,一個(gè)名為roles的bean。 我們希望在該bean內(nèi)定義一個(gè)名為ADMIN的常量。
最終, hasRole需要檢查代表Stormpath Group的唯一Href。 因此,我們的ADMIN常數(shù)必須是一個(gè)Java String ,該String將Href保留到用于管理員的Stormpath組中。
為了完成此配置并使它具有Roles.java動(dòng)態(tài)性,我們需要一個(gè)名為Roles.java的新類:
@Component public class Roles {public final String ADMIN;@Autowiredpublic Roles(Environment env) {ADMIN = env.getProperty("stormpath.authorized.group.admin");} }這9條線是如此強(qiáng)大,我在這里一覽無余! 讓我們深入。
通過在第1行用@Component注釋此類,Spring將實(shí)例化它并將其公開為bean。 猜猜豆子的名字是什么? Spring將采用該類的名稱,并以駝峰式大小寫以默認(rèn)情況下派生Bean名稱。 因此,bean的名稱是roles 。 甜!
第5行的@Autowired注釋使Spring Environment對(duì)象傳遞到構(gòu)造函數(shù)中。 在構(gòu)造函數(shù)內(nèi)部,由于ADMIN已被聲明為final ,因此我們唯一的機(jī)會(huì)是對(duì)其進(jìn)行設(shè)置-要求能夠在hasRoles子句中使用它。
難題的最后一部分利用了一些Stormpath配置魔術(shù)。 請注意,我們正在將ADMIN的值設(shè)置為名為stormpath.authorized.group.admin的環(huán)境屬性。 這是標(biāo)準(zhǔn)的Spring。 如果您的application.properties文件中有一個(gè)具有該名稱的屬性,那么它將在Spring Environment中可用。
Stormpath增加了將其設(shè)置為系統(tǒng)環(huán)境變量的能力,從而無需在應(yīng)用程序中的任何位置硬編碼該值(在這種情況下為Stormpath Group Href)。
通常,系統(tǒng)環(huán)境變量全部為大寫字母,單詞之間用下劃線分隔。 Stormpath Java SDK自動(dòng)將這些系統(tǒng)變量轉(zhuǎn)換為小寫的點(diǎn)分表示法。
挖這個(gè):
STORMPATH_AUTHORIZED_GROUP_ADMIN=https://api.stormpath.com/v1/groups/1wcsYMUZhzytUH5GmdaFXC \ java -jar build/libs/spring-boot-spring-security-tutorial-0.1.0.jar在后臺(tái),Stormpath會(huì)將STORMPATH_AUTHORIZED_GROUP_ADMIN系統(tǒng)環(huán)境變量轉(zhuǎn)換為stormpath.authorized.group.admin環(huán)境變量。 這將被我們上面的代碼處理。
! 誰想到只需幾行代碼就能實(shí)現(xiàn)這種魔力!
現(xiàn)在,我們需要將AdminService到我們的控制器。 這是我們更新的HelloController.java的相關(guān)部分:
@Controller public class HelloController {@AutowiredAdminService adminService;...@RequestMapping("/admin")String admin() {adminService.ensureAdmin();return "admin";} }在第4行和第5行自動(dòng)連接AdminService 。請注意,在第11行,我們正在調(diào)用adminService.ensureAdmin方法。 如果已登錄的用戶ADMIN組中,則將生成403 (禁止)響應(yīng)。
最后的代碼整理工作是創(chuàng)建一個(gè)admin.html模板。 在與該帖子相關(guān)的代碼中,有一個(gè)簡單的admin.html模板,該模板顯示了格式正確的消息,確認(rèn)您確實(shí)是管理員。
現(xiàn)在,要查看實(shí)際效果,您需要在管理控制臺(tái)中進(jìn)行一些Stormpath內(nèi)務(wù)處理。
步驟如下:
- 創(chuàng)建一個(gè)新的應(yīng)用程序
- 為應(yīng)用程序創(chuàng)建一個(gè)名為“ admin”的新組
- 在管理組中創(chuàng)建一個(gè)新帳戶
- 不在管理員組中創(chuàng)建一個(gè)新帳戶
在與此帖子相關(guān)的代碼中,我還包括了一個(gè)方便的錯(cuò)誤頁面,因此,如果您不在admin組中,那么您將獲得格式正確的頁面,而不是默認(rèn)的403頁面。
讓我們來看看它的作用。 我們將像以前一樣啟動(dòng)該應(yīng)用程序,只是這一次我們將對(duì)在上一步中創(chuàng)建的新應(yīng)用程序和組使用在管理控制臺(tái)中找到的Href。
這是Maven的方式:
mvn clean package STORMPATH_API_KEY_FILE=~/.stormpath/apiKey.properties \ STORMPATH_APPLICATION_HREF=https://api.stormpath.com/v1/applications/4YHCurbtcaFC4TKKsd3AYQ \ STORMPATH_AUTHORIZED_GROUP_ADMIN=https://api.stormpath.com/v1/groups/1wcsYMUZhzytUH5GmdaFXC \ mvn spring-boot:run這是Gradle的方式:
gradle clean build STORMPATH_API_KEY_FILE=~/.stormpath/apiKey.properties \ STORMPATH_APPLICATION_HREF=https://api.stormpath.com/v1/applications/4YHCurbtcaFC4TKKsd3AYQ \ STORMPATH_AUTHORIZED_GROUP_ADMIN=https://api.stormpath.com/v1/groups/1wcsYMUZhzytUH5GmdaFXC \ java -jar build/libs/spring-boot-spring-security-tutorial-0.1.0.jar瀏覽到/admin頁面。
如果您以在Stormpath admin組(在我的情況下為micah+admin@stormpath.com)中創(chuàng)建的用戶身份登錄,則可以訪問管理頁面。 如果您以創(chuàng)建的用戶身份登錄,而該用戶不在Stormpath admin組中(在我的情況下為micah+user@stormpath.com),則將顯示禁止頁面。
無論您以誰身份登錄,都可以像我們之前設(shè)置的那樣訪問/restricted頁面。
包起來
好吧,我們在這里涵蓋了很多領(lǐng)域,不是嗎!
我們看到了如何保護(hù)單個(gè)頁面以及如何基于組中的成員資格來保護(hù)方法。
我們看到了如何在你的類,它擴(kuò)展應(yīng)用 Stormpath WebSecurityConfigurerAdapter定義不同的路徑訪問控制,以及利用Spring安全的@PreAuthorize注釋控制的更細(xì)的晶粒。
我們看到了Stormpath Java SDK管理環(huán)境配置屬性以為您的應(yīng)用程序提供高度靈活性而無需進(jìn)行任何硬編碼的幾乎神奇的方式。
Java SDK和Spring Boot集成中還有許多功能。 在此處查看深入的教程。
隨時(shí)隨地提供支持或親自給我 。
建筑物身份管理,包括身份驗(yàn)證和授權(quán)? 嘗試Stormpath! 我們的REST API和強(qiáng)大的Java SDK支持可以消除您的安全風(fēng)險(xiǎn),并且可以在幾分鐘內(nèi)實(shí)現(xiàn)。 注冊 ,再也不會(huì)建立auth了!
翻譯自: https://www.javacodegeeks.com/2016/06/simple-web-app-spring-boot-spring-security-stormpath-15-minutes.html
總結(jié)
以上是生活随笔為你收集整理的一个具有Spring Boot,Spring Security和Stormpath的简单Web应用程序-15分钟的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate关联映射_具有关联映射
- 下一篇: 使用Boxfuse轻松在云中运行Spri