日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java heroku_使用Spring Boot和Heroku在20分钟内完成Java的单点登录

發(fā)布時(shí)間:2023/12/3 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java heroku_使用Spring Boot和Heroku在20分钟内完成Java的单点登录 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java heroku

建筑物身份管理,包括身份驗(yàn)證和授權(quán)? 嘗試Stormpath! 我們的REST API和強(qiáng)大的Java SDK支持可以消除您的安全風(fēng)險(xiǎn),并且可以在幾分鐘內(nèi)實(shí)現(xiàn)。 注冊(cè) ,再也不會(huì)建立auth了!

大規(guī)模更新

我最初為本文撰寫(xiě)的代碼更適合非Spring Boot環(huán)境。

Stormpath為其IDSite服務(wù)現(xiàn)有的Spring Boot集成使為其編寫(xiě)代碼變得輕而易舉 。 它利用了Spring Boot必須提供的所有自動(dòng)配置。

如果您是新手,請(qǐng)繼續(xù)閱讀。 如果您以前閱讀過(guò)它,請(qǐng)?zhí)痢?更新Spring Boot Webapp”部分。 您會(huì)看到RestrictedController從40行減少到15行,從4種方法減少到1行。

主要事件–輕松單點(diǎn)登錄

我喜歡Java如何保持自我創(chuàng)新以保持最新和相關(guān)性(我可以聽(tīng)到我所有的Node.js和Ruby朋友吟)。 支持Java的生態(tài)系統(tǒng)也在跟上新的發(fā)展。 如今,與使用Python或Node.js一樣快地構(gòu)建,測(cè)試和部署豐富的Java Web應(yīng)用程序一樣容易(如今越來(lái)越難了)。

其中之一就是Spring Boot,它使在幾分鐘內(nèi)構(gòu)建和啟動(dòng)Java Webapp成為現(xiàn)實(shí)。 Heroku對(duì)Java支持的關(guān)注也加快了步伐。

最后,Stormpath意味著開(kāi)發(fā)人員不必構(gòu)建身份驗(yàn)證和授權(quán)工作流。 Stormpath的身份API和單點(diǎn)登錄功能( 通過(guò)IDSite )提供了開(kāi)箱即用的帳戶注冊(cè),登錄,電子郵件工作流以及跨應(yīng)用程序的單點(diǎn)登錄。 這些流程包括默認(rèn)表單和視圖,所有這些都是可定制的。

在這篇文章中,我們將把所有這些放在一起,并在20分鐘內(nèi)在您的應(yīng)用程序中獲得單點(diǎn)登錄的額外好處。

繼續(xù)閱讀-滴答滴答!

這是本教程所需的先決條件:

  • Gradle2.x
    • 在Mac上: brew install gradle
  • Heroku
    • 創(chuàng)建一個(gè)Heroku帳戶
  • 一個(gè)Stormpath帳戶(我們還將在下面介紹)

注意 :您可以輕松使用Maven 。 如果您更喜歡此構(gòu)建工具,則本文附帶的源代碼包括pom.xml 。

為了使其變得超級(jí)容易,我們?cè)诿總€(gè)示例中都添加了一個(gè)方便的Heroku部署按鈕,因此您可以立即查看它的運(yùn)行情況。 如果您花了超過(guò)20分鐘的時(shí)間,請(qǐng)?jiān)谠u(píng)論中告訴我們是什么阻止了您。 我們喜歡反饋。

啟動(dòng)Spring Boot – 5分鐘教程

注意 :如果您已經(jīng)對(duì)Spring Boot有所了解,則可能需要跳到下一部分。 在那里–我剛剛為您節(jié)省了5分鐘。 別客氣。

本節(jié)使用github存儲(chǔ)庫(kù)中的SpringBootBasic標(biāo)簽。

Spring Boot使您能夠啟動(dòng)一個(gè)功能全面的Java Web應(yīng)用程序,就像啟動(dòng)一個(gè)簡(jiǎn)單的Java應(yīng)用程序一樣。 它具有main方法和所有內(nèi)容。 例如, @SpringBootlApplication注釋執(zhí)行@Configuration @EnableAutoConfiguration , @ComponentScan @EnableAutoConfiguration和@ComponentScan注釋(具有默認(rèn)屬性)在@EnableAutoConfiguration Spring應(yīng)用程序中所做的所有操作。

令Spring Boot如此出色且如此輕松工作的是Starter軟件包,這些軟件包增加了功能,包括默認(rèn)配置。 我們將在Stormpath Spring Boot Thymeleaf Starter的所有Stormpath功能中進(jìn)一步使用它們來(lái)創(chuàng)建新用戶,登錄和更改密碼。 您要做的只是在build.gradle或pom.xml文件中引用一個(gè)jar。

對(duì)于我們的基本示例,我們將包括核心Spring Boot Starter Web和Thymeleaf Spring Boot Starter。 Thymeleaf是現(xiàn)代HTML 5 Java模板引擎。

這是我們的build.gradle :

buildscript {repositories {mavenCentral()}dependencies {classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.5.RELEASE")} }apply plugin: 'java' apply plugin: 'maven' apply plugin: 'spring-boot'group = 'com.stormpath' version = '0.1.0'sourceCompatibility = 1.8 targetCompatibility = 1.8repositories {mavenCentral() }dependencies {compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version:'1.2.5.RELEASE'compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf', version:'1.2.5.RELEASE' }

要使我們的基本Spring Boot應(yīng)用程序正常運(yùn)行,我們還需要三個(gè)文件。

IDSiteDemoApplication.java是應(yīng)用程序的入口點(diǎn):

package com.stormpath.idsite_demo;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication public class IDSiteDemoApplication {public static void main(String[] args) {SpringApplication.run(IDSiteDemoApplication.class, args);} }

@SpringBootApplication批注設(shè)置了啟動(dòng)應(yīng)用程序所需的所有配置。

HomeController.java映射URI并解析為T(mén)hymeleaf模板:

package com.stormpath.idsite_demo.controllers;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;@Controller public class HomeController {@RequestMapping("/")public String home() {return "home";} }

@Controller和@RequestMapping批注將此類設(shè)置為控制器,并將其配置為處理/ URI上的請(qǐng)求。 只需將String home鉤子返回到Thymeleaf模板體系結(jié)構(gòu)中,即可將我們引到最終文件:

位于templates文件夾中的home.html是瀏覽至/時(shí)將呈現(xiàn)的模板:

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" 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>Hello!</h1></div></div></div></body> </html>

注意 :您可能會(huì)注意到上面模板中的th:include指令。 這是Thymeleaf體系結(jié)構(gòu)的一部分,用于將文件包含在其他文件中。 該示例的完整源代碼包含templates/fragments/head.html文件。

那好吧 讓我們通過(guò)啟動(dòng)最基本的Spring Boot應(yīng)用程序來(lái)完善前5分鐘。

gradle clean build可以解決問(wèn)題。 然后: java -jar build/libs/idsite_demo-0.1.0.jar

為SpringBoot身份驗(yàn)證添加Stormpath

本節(jié)使用github存儲(chǔ)庫(kù)中的SpringBootStormpath標(biāo)記。

在本節(jié)中,我們將:

  • 創(chuàng)建一個(gè)Stormpath帳戶
  • 生成Stormpath API密鑰對(duì)
  • 將應(yīng)用程序添加到您的Stormpath帳戶
  • 更新您的Spring Boot網(wǎng)絡(luò)應(yīng)用程序以顯示一些Stormpath應(yīng)用程序信息
  • 點(diǎn)火并觀看它的工作情況

創(chuàng)建一個(gè)Stormpath帳戶

轉(zhuǎn)到“風(fēng)暴路徑注冊(cè)”頁(yè)面 。 輸入您的名字和姓氏,公司,電子郵件和密碼。

單擊注冊(cè)。

點(diǎn)擊收到的驗(yàn)證電子郵件中的鏈接。 然后,您將看到為您生成的租戶名稱。

登錄。 做完了

注意 :有關(guān)多租戶應(yīng)用程序的更多信息,我們上面有一個(gè)方便的博客文章 。

生成Stormpath API密鑰對(duì)

登錄到Stormpath帳戶后,您將看到以下屏幕:

單擊Create API Key按鈕。

單擊Create API Key按鈕并保存文件。

存儲(chǔ)在該文件中的API密鑰用于向Stormpath驗(yàn)證您的應(yīng)用程序。 在該文件中,有一個(gè)apiKey.id和apiKey.secret 。 您永遠(yuǎn)都不想暴露apiKey.secret 。 因此,例如,您永遠(yuǎn)不需要將api密鑰文件簽入git存儲(chǔ)庫(kù)。 稍后,當(dāng)我們部署到Heroku時(shí),我將向您展示如何配置您的應(yīng)用程序以使用api密鑰,而不必將它們存儲(chǔ)在git存儲(chǔ)庫(kù)中。

Stormpath使用了詳細(xì)記錄的配置默認(rèn)值,使使用我們的API變得超級(jí)容易。 這些默認(rèn)值之一是api密鑰文件位置。 Java SDK將自動(dòng)在您的主目錄中查找文件:

~/.stormpath/apiKey.properties

如果將下載的文件復(fù)制到該路徑,則不需要其他配置即可從應(yīng)用程序連接到Stormpath。

將應(yīng)用程序添加到您的Stormpath帳戶

返回管理控制臺(tái),點(diǎn)擊“應(yīng)用程序”標(biāo)簽。

您會(huì)注意到已經(jīng)存在兩個(gè)應(yīng)用程序: My Application和Stormpath 。 他們?cè)谧?cè)Stormpath時(shí)自動(dòng)設(shè)置。 如果沒(méi)有定義任何其他Stormpath應(yīng)用程序,則Spring Boot應(yīng)用程序不需要進(jìn)一步的配置。 默認(rèn)情況下,它將連接到已定義的“ My Application實(shí)例。

但是,這里的最終目標(biāo)是獲得一些Single Signon的好處,為此,我們需要多個(gè)應(yīng)用程序才能登錄。

因此,讓我們創(chuàng)建另一個(gè)Stormpath應(yīng)用程序。 單擊Create Application按鈕。

讓我們?cè)谶@里分解選項(xiàng)。

名稱和(可選)描述不言自明。 而且,我們希望此應(yīng)用程序已啟用是有意義的。

默認(rèn)情況下,“ Create new Directory復(fù)選框處于選中狀態(tài)。 對(duì)于我們的示例,我未選中此選項(xiàng)。 相反,我已經(jīng)選中了“將Map Account Stores to this Application復(fù)選框,并選擇了“ My Application Directory 。 最后,我單擊了“ DEFAULT ACCOUNT LOCATION和“ DEFAULT GROUP LOCATION單選按鈕。

那么,這是怎么回事? Stormpath的組織方式,應(yīng)用程序可以使用任意數(shù)量的目錄作為其帳戶存儲(chǔ)。 Stormpath目錄只是包含帳戶和組的存儲(chǔ)桶。 出于我們的目的,我們可以使用注冊(cè)時(shí)為我們自動(dòng)創(chuàng)建的目錄My Application Directory 。 在下面的獎(jiǎng)勵(lì)部分,我將向您展示如何創(chuàng)建特定類型的目錄,以將Google身份驗(yàn)證添加到您的應(yīng)用中。 劇透警報(bào):超級(jí)容易。

更新您的Spring Boot Webapp

讓我們將基本的Spring Boot應(yīng)用程序連接到Stormpath,以顯示一些Stormpath應(yīng)用程序信息。 這將為能夠與ID網(wǎng)站服務(wù)集成奠定基礎(chǔ)。

看看我們的HomeController :

package com.stormpath.idsite_demo.controllers;@Controller public class HomeController {@AutowiredApplication app;@RequestMapping("/")public String home(Model model) {model.addAttribute("appName", app.getName());model.addAttribute("appDescription", app.getDescription());return "home";} }

現(xiàn)在,我們利用了Spring的@Autowired功能,為我們提供了Stormpath Application對(duì)象的句柄。 使用它,我們?cè)贛odel對(duì)象中設(shè)置應(yīng)用程序的名稱和描述,并將其傳遞給我們的模板。

這將我們帶入下一個(gè)更改,即home.html Thymeleaf模板:

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" 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! Welcome to App: [[${appName}]]</h1><h3 th:inline="text">[[${appDescription}]]</h3></div></div></div></body> </html>

使用Thymeleaf表示法將信息拉出模型,我們引用了[[${appName}]]和[[${appDescription}]] 。

最后,我們將進(jìn)行一個(gè)小(但功能強(qiáng)大)的更新以build.gradle文件。 我們正在更改此行:

compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf', version:'1.2.5.RELEASE'

對(duì)此:

compile group: 'com.stormpath.spring', name: 'spring-boot-starter-stormpath-thymeleaf', version:'1.0.RC4.5'

我們已經(jīng)將Spring的Thymleaf Spring Boot Starter換成Stormpath的了。 這是很酷的一點(diǎn):此Starter中包含了與Stormpath Java SDK交互所需的一切。

我們的應(yīng)用程序文件中總共更改了7行,并添加了一個(gè)文件application.properties以開(kāi)始掛接到Stormpath。

構(gòu)建您的Java Web應(yīng)用程序

我們?cè)谶@里需要的其他一點(diǎn)信息是您創(chuàng)建的Stormpath應(yīng)用程序的URL。

您可以導(dǎo)航到您的應(yīng)用程序,從管理儀表板中找到它。

假設(shè)您將api密鑰文件放在~/.stormpath/apiKey.properties的默認(rèn)位置,這是運(yùn)行此示例所需的全部工作:

gradle clean build STORMPATH_APPLICATION_HREF=https://api.stormpath.com/v1/applications/6bHOGj63WM8cfC2nhD3Pki \java -jar build/libs/idsite_demo-0.1.0.jar

當(dāng)然,您需要放入自己的STORMPATH_APPLICATION_HREF 。

您可以看到瀏覽器中的頁(yè)面現(xiàn)在正在顯示來(lái)自我們創(chuàng)建的Stormpath應(yīng)用程序的信息。

使用IDSite的Stormpath單點(diǎn)登錄…

…你猜到了。 五分鐘。

本節(jié)使用github存儲(chǔ)庫(kù)中的SpringBootStormpathIDSite標(biāo)記。

您可能有向應(yīng)用程序添加身份驗(yàn)證和授權(quán)的經(jīng)驗(yàn)。 也許您是預(yù)先完成的。 也許那是您說(shuō)過(guò)要達(dá)成的目標(biāo)-最終。 無(wú)論哪種方式,這都很痛苦。 而且,它與您要解決的問(wèn)題無(wú)關(guān)。 但是,這是至關(guān)重要且必要的。

在本節(jié)中,我們將添加以下功能:創(chuàng)建新用戶,登錄,將頁(yè)面訪問(wèn)權(quán)限限制為僅那些已登錄用戶和更改密碼。 并且,我們將以最少的編碼和最少的配置來(lái)做到這一點(diǎn)。

標(biāo)識(shí)站點(diǎn)配置

首先,我們將從管理控制臺(tái)設(shè)置IDSite。 單擊“ ID站點(diǎn)”選項(xiàng)卡。

滾動(dòng)時(shí),您會(huì)發(fā)現(xiàn)有許多字段帶有標(biāo)簽Upgrade Required 。 基本ID網(wǎng)站功能可與我們的免費(fèi)套餐一起使用,我們將在稍后看到。 具有自定義域或自定義用于身份驗(yàn)證的模板需要付費(fèi)訂閱。

在這里,我們只是要更新兩個(gè)字段并保存設(shè)置。

為了安全起見(jiàn),您必須指定一個(gè)允許與ID網(wǎng)站建立連接的URL列表。

在“ Authorized Javascript Origin URLs字段中輸入http://localhost:8080 。

出于安全原因,您必須指定授權(quán)重定向URL的列表。

在Authorized Redirect URLs字段中輸入http://localhost:8080/并在另一行中輸入http://localhost:8080/idSiteResult 。

單擊Save按鈕。 這就是配置ID站點(diǎn)以在應(yīng)用程序中啟用身份驗(yàn)證和授權(quán)所需要的。

讓我們退后一步,用我們5分鐘中寶貴的30秒時(shí)間來(lái)查看ID網(wǎng)站背后的機(jī)制。

當(dāng)用戶嘗試訪問(wèn)您網(wǎng)站的受限區(qū)域時(shí),如果他們尚未擁有有效的會(huì)話,他們將被重定向到您的ID網(wǎng)站。

他們將看到一個(gè)熟悉的登錄表單,其中包含用于創(chuàng)建新用戶和重置其密碼的選項(xiàng)。

這個(gè)是從哪里來(lái)的? 這是魔術(shù)嗎? 這是使用ID Site的一部分-通常由您自己編寫(xiě)的所有身份驗(yàn)證和授權(quán)流程。 不良。 (哎呀,這有點(diǎn)苛刻。但是,認(rèn)真的說(shuō),由于身份驗(yàn)證代碼實(shí)施不當(dāng),您多久閱讀一次有關(guān)安全漏洞的信息?)

身份驗(yàn)證后,它們將被重定向回您指定的URL,并將能夠訪問(wèn)該受限內(nèi)容。

您的用戶似乎完全熟悉此過(guò)程-甚至平凡。 您將只需很少的配置或編碼即可完成此任務(wù)。

更新您的Spring Boot Webapp

啟用對(duì)您的Spring啟動(dòng)應(yīng)用程序IDSite是在一個(gè)單一的財(cái)產(chǎn)處理application.properties 。 我們還將另外兩條線來(lái)控制流。

stormpath.web.idSite.enabled = true stormpath.web.login.nextUri = /restricted/secret stormpath.web.logout.nextUri = /?status=logout

第1行為您的應(yīng)用程序啟用IDSite。 對(duì)。 這就是全部!

IDSite具有默認(rèn)的標(biāo)準(zhǔn)身份驗(yàn)證流。 默認(rèn)情況下,在驗(yàn)證用戶身份之后, /login重定向到/ ,在會(huì)話被銷毀后, /logout重定向到/login?status=logout 。

對(duì)于我們的應(yīng)用程序,一旦用戶通過(guò)身份驗(yàn)證,我們希望他們重定向回/restricted/secret 。 而且,一旦用戶注銷,我們將以狀態(tài)logout將他們重定向回前門(mén)。 上面的第2行和第3行完成了此操作。

我們?cè)趆ome.html模板中添加了一行,以啟動(dòng)整個(gè)登錄流程:

<a class="btn btn-success" href="/restricted/secret">Click here for a secret message.</a>

我們將在一個(gè)新的控制器中添加大約15行代碼(總計(jì))以掛接到ID Site。
讓我們看一下該控制器RestrictedController.java 。

package com.stormpath.idsite_demo.controllers;@Controller public class RestrictedController {@AutowiredApplication app;@Value("#{ @environment['stormpath.sso.cross.link'] ?: '/' }")private String crossLink;@Value("#{ @environment['stormpath.sso.message.primary'] ?: 'Primary' }")private String messagePrimary;@Value("#{ @environment['stormpath.sso.message.secondary'] ?: 'Secondary' }")private String messageSecondary;@RequestMapping("/restricted/secret")public String secret(HttpServletRequest request, Model model) {Account account = AccountResolver.INSTANCE.getAccount(request);if (account == null) {return "redirect:/login";}model.addAttribute("appName", app.getName());model.addAttribute("crossLink", crossLink);model.addAttribute("messagePrimary", messagePrimary);model.addAttribute("messageSecondary", messageSecondary);return "restricted/secret";} }

讓我們分解一下:

第8、11和14行使用標(biāo)準(zhǔn)的Spring工具來(lái)注入值。

引用環(huán)境變量ala @environment['stormpath.sso.message.primary']提取在applications.properties中找到的屬性。

這是最重要的部分:Stormpath具有將系統(tǒng)環(huán)境變量轉(zhuǎn)換為應(yīng)用程序環(huán)境變量的內(nèi)置工具。 這使我們?cè)贖eroku這樣的部署環(huán)境中設(shè)置環(huán)境變量變得非常容易。

它是這樣工作的:將系統(tǒng)環(huán)境變量轉(zhuǎn)換為小寫(xiě),并將下劃線替換為句點(diǎn)。

因此, STORMPATH_SSO_MESSAGE_PRIMARY被轉(zhuǎn)換為stormpath.sso.message.primary 。

crossLink用于單點(diǎn)登錄的環(huán)境。 此變量包含指向IDSite中設(shè)置的另一個(gè)應(yīng)用程序的受限頁(yè)面的完全限定URL。

messagePrimary和messageSecondary用于設(shè)置在受限頁(yè)面上顯示的消息。

這三個(gè)變量使我們可以將相同的代碼庫(kù)部署到多個(gè)Heroku應(yīng)用程序,并在受限頁(yè)面上顯示不同的消息。

這是IDSite在幕后發(fā)生的事情:

  • 在主頁(yè)上,單擊“ Click here for a secret message. 鏈接到/restricted/secret 。
  • 根據(jù)@RequestMapping注釋輸入RestrictedController的secret方法。
  • 由于尚未建立會(huì)話,因此account變量將顯示為null 。
  • 根據(jù)第22行的條件,您將被重定向到/login頁(yè)面。
  • 登錄頁(yè)面由您的IDSite托管。
  • 輸入憑據(jù)并單擊“ Login按鈕后,您將被重定向回您的應(yīng)用程序。
  • 您的Spring Boot應(yīng)用程序會(huì)自動(dòng)處理IDSite重定向回的/idSiteResult回調(diào)。
  • 基于在設(shè)置applications.properties ,內(nèi)置IDSite回調(diào)處理程序?qū)⒅囟ㄏ虻?restricted/secret
  • 這一次,有一個(gè)會(huì)話, account變量將不會(huì)為null 。
  • 最后,將返回restricted/secret模板。
  • 第6行和第10行之間的所有重定向都在眨眼之間發(fā)生。

    讓我們看一下新模板, restricted/secret.html :

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"><head><title>Hello World!</title><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">[[${appName}]] App</h1><h1 th:inline="text">Hey, [[${account.fullName}]]</h1><h3 th:utext="${messagePrimary}">Primary</h3><h4 th:utext="${messageSecondary}">Secondary</h4><a class="btn btn-danger" href="/logout">Log Out</a><a class="btn btn-success" href="/">Go Home</a><a class="btn btn-warning" th:href="@{${crossLink}}">SSO: Jump to Other Site</a></div></div></div></body> </html>

    從與ID網(wǎng)站進(jìn)行交互的角度來(lái)看,這里有兩行有趣的內(nèi)容。

    <h1 th:inline="text">Hey, [[${account.fullName}]]</h1>

    此行訪問(wèn)Account的fullName屬性,該屬性在傳入模板的模型中自動(dòng)設(shè)置。

    <a class="btn btn-danger" href="/logout">Log Out</a>

    /logout端點(diǎn)由IDSite自動(dòng)處理,并銷毀現(xiàn)有會(huì)話。

    啟動(dòng)您的Webapp并試用

    像以前一樣啟動(dòng)應(yīng)用程序:

    gradle clean build STORMPATH_APPLICATION_HREF=https://api.stormpath.com/v1/applications/6bHOGj63WM8cfC2nhD3Pki \java -jar build/libs/idsite_demo-0.1.0.jar

    由于我們尚未在Stormpath目錄中定義任何用戶,因此讓我們創(chuàng)建一個(gè)新用戶,然后確保我們可以以該用戶身份登錄和注銷。

    首先,瀏覽到前門(mén): http://localhost:8080

    單擊友好的綠色按鈕。

    點(diǎn)擊Create an Account鏈接。

    單擊友好的綠色按鈕。

    暈! 我們進(jìn)來(lái)了!

    如果現(xiàn)在單擊綠色按鈕,將帶您回到主頁(yè)。 如果然后單擊主頁(yè)上的綠色按鈕,則將直接轉(zhuǎn)到受限頁(yè)面。 您將不會(huì)再看到登錄表單。 這是因?yàn)槟⒘擞行У臅?huì)話。

    如果單擊紅色按鈕,您將注銷并重定向到主頁(yè)。 單擊綠色按鈕將您帶入會(huì)話,這將使您再次進(jìn)入登錄表單。

    您可能會(huì)注意到,創(chuàng)建帳戶后,我們將立即登錄并發(fā)送到受限頁(yè)面。 您可以通過(guò)在Stormpath管理控制臺(tái)中要求電子郵件驗(yàn)證作為帳戶創(chuàng)建過(guò)程的一部分來(lái)放慢速度。

    注意 :存在一個(gè)已知問(wèn)題,您無(wú)法在同一會(huì)話中登錄到Stormpath Admin儀表板并使用ID Site進(jìn)行身份驗(yàn)證。 我們正在努力盡快解決此問(wèn)題。 它永遠(yuǎn)不會(huì)影響您的用戶,因?yàn)樗鼈冇肋h(yuǎn)不會(huì)出現(xiàn)在您的Stormpath Admin儀表板中。 目前,使用Stormpath Admin Dashbaord時(shí),請(qǐng)使用單獨(dú)的瀏覽器配置文件或單獨(dú)的瀏覽器實(shí)例。

    在5分鐘內(nèi)使用Heroku進(jìn)行單點(diǎn)登錄

    本節(jié)使用github存儲(chǔ)庫(kù)中的SpringBootStormpathIDSite標(biāo)記。

    注意 :如果要測(cè)試SSO而不自行部署,則可以使用上方的Heroku Deploy按鈕部署兩個(gè)不同的Heroku Apps。

    ! 回家舒展! 那么,我一直在聽(tīng)到這么多的SSO是什么? 有了我們建立的基礎(chǔ),我們現(xiàn)在可以將該Web應(yīng)用程序的多個(gè)實(shí)例部署到Heroku。 所以呢? 我會(huì)告訴你“那又怎樣!”

    我們可以部署Web應(yīng)用程序的多個(gè)實(shí)例雖然很新穎,但真正賦予它強(qiáng)大功能的是ID Site的單一登錄功能。 在本節(jié)結(jié)束時(shí),您將看到通過(guò)登錄該Web應(yīng)用程序的一個(gè)實(shí)例,您可以瀏覽到該Web應(yīng)用程序的另一個(gè)實(shí)例的受限頁(yè)面, 而無(wú)需再次登錄。

    首先,我們需要添加一個(gè)文件,以便Heroku知道如何啟動(dòng)我們的應(yīng)用程序。 這是一個(gè)單行的Procfile :

    web: java $JAVA_OPTS -Dserver.port=$PORT -jar target/*.jar

    注意bash樣式變量: $PORT 。 這是由Heroku自動(dòng)填充的,不需要我們明確設(shè)置。

    讓我們?cè)O(shè)置和部署一個(gè)Heroku應(yīng)用程序,并確保一切正常

    heroku apps:create idsite-demo-app1 --remote idsite-demo-app1

    注意命令末尾的--remote 。 Heroku自動(dòng)將git遠(yuǎn)程添加到本地存儲(chǔ)庫(kù),以便能夠部署您的應(yīng)用程序。 默認(rèn)情況下,此遙控器將命名為heroku 。 由于我們將部署該應(yīng)用程序的多個(gè)實(shí)例,因此我們需要不同的遠(yuǎn)程名稱。

    現(xiàn)在,我們已經(jīng)創(chuàng)建了應(yīng)用程序,我們需要設(shè)置一些配置參數(shù)。 這是秘密秘訣的一部分,它使我們可以部署相同的代碼庫(kù),但將Web應(yīng)用程序鏈接到不同的Stormpath應(yīng)用程序。

    heroku config:set \STORMPATH_API_KEY_ID=<your api key id> \STORMPATH_API_KEY_SECRET=<your api key secret> \STORMPATH_APPLICATION_HREF=<your app href> \STORMPATH_SSO_CROSS_LINK=https://idsite-demo-app2.herokuapp.com/restricted/secret \STORMPATH_SSO_MESSAGE_PRIMARY="The secret is that chocolate is delicious"'!' \STORMPATH_SSO_MESSAGE_SECONDARY="Yummy"'!' \ --app idsite-demo-app1

    假設(shè)您已經(jīng)將另一個(gè)名為idsite-demo-app2應(yīng)用程序部署到了Heroku。 該應(yīng)用程序的受限頁(yè)面上使用STORMPATH_SSO_CROSS_LINK鏈接到其他應(yīng)用程序。 一切設(shè)置正確后,您無(wú)需再次登錄。 這就是單點(diǎn)登錄的強(qiáng)大功能!

    還記得我之前說(shuō)過(guò)的Stormpath如何進(jìn)行自我配置的好處之一是,您不需要在代碼中嵌入敏感的api密鑰信息嗎? 這就是所有的地方。 在上面的命令中,我們?yōu)镠eroku實(shí)例設(shè)置環(huán)境變量。 Stormpath SDK自動(dòng)檢查STORMPATH_API_KEY_ID , STORMPATH_API_KEY_SECRET和STORMPATH_APPLICATION_HREF環(huán)境變量是否存在。 如果存在,則SDK在與API交互時(shí)將自動(dòng)使用這些環(huán)境變量中的值。 這就是將我們的Spring Boot Web應(yīng)用程序連接到正確的Stormpath應(yīng)用程序的原因。

    好。 設(shè)置好舞臺(tái)。 讓我們部署我們的應(yīng)用程序!

    git push idsite-demo-app1 master

    這會(huì)產(chǎn)生大量輸出,但讓我們看一下其中的一些亮點(diǎn):

    remote: Compressing source files... done. remote: Building source: ...remote: [INFO] remote: [INFO] ------------------------------------------------------------------------ remote: [INFO] Building demo 0.0.1-SNAPSHOT remote: [INFO] ------------------------------------------------------------------------ ...remote: [INFO] Installing /tmp/build_a7299c4194f003c6e3730e568a540e82/target/demo-0.0.1-SNAPSHOT.jar to /app/tmp/cache/.m2/repository/com/stormpath/idsite_demo/demo/0.0.1-SNAPSHOT/demo-0.0.1-SNAPSHOT.jar remote: [INFO] ------------------------------------------------------------------------ remote: [INFO] BUILD SUCCESS remote: [INFO] ------------------------------------------------------------------------ ...remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... done, 63.6MB remote: -----> Launching... done, v6 remote: https://idsite-demo-app1.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy.... done. To https://git.heroku.com/idsite-demo-app1.git* [new branch] master -> master

    Procfile ,Heroku正在基于我們的Procfile發(fā)現(xiàn)進(jìn)程類型。 在這種情況下,它是web 。

    我們第一個(gè)應(yīng)用程序的最后一項(xiàng)工作是將ID Site配置為接受來(lái)自它的連接并重定向到它。 跳回到ID站點(diǎn)的管理控制臺(tái),然后將https://idsite-demo-app1.herokuapp.com添加到“授權(quán)Javascript原始URL”列表中,然后添加https://idsite-demo-app1.herokuapp.com/和https://idsite-demo-app1.herokuapp.com/idSiteResult到授權(quán)重定向URL列表。

    確保單擊屏幕底部的“ Save按鈕。

    并且, https ://idsite-demo-app1.herokuapp.com/準(zhǔn)備就緒! 看看這個(gè)。 創(chuàng)建一個(gè)帳戶。 登錄并注銷。 玩得開(kāi)心。

    現(xiàn)在,我們到達(dá)了SSO應(yīng)許之地的大門(mén)。 這就是所有要做的事情:

    • 創(chuàng)建另一個(gè)Stormpath應(yīng)用程序
    • 創(chuàng)建另一個(gè)Heroku應(yīng)用程序
    • 設(shè)置新的Heroku應(yīng)用程序的配置
    • 將我們的Spring Boot應(yīng)用程序部署到新的Heroku應(yīng)用程序
    • 更新我們的ID網(wǎng)站,以包括用于授權(quán)來(lái)源和重定向的新URL

    我們只是在漂洗并重復(fù)我們以前所做的事情。

    讓我們創(chuàng)建新的Stormpath應(yīng)用程序:

    請(qǐng)注意,我們正在為此新應(yīng)用程序映射相同的帳戶存儲(chǔ)。

    是時(shí)候創(chuàng)建一個(gè)新的Heroku應(yīng)用程序了

    heroku apps:create idsite-demo-app2 --remote idsite-demo-app2

    并且,配置它:

    heroku config:set \STORMPATH_API_KEY_ID=<your api key id> \STORMPATH_API_KEY_SECRET=<your api key secret> \STORMPATH_APPLICATION_HREF=<your app href> \STORMPATH_SSO_CROSS_LINK=https://idsite-demo-app1.herokuapp.com/restricted/secret \STORMPATH_SSO_MESSAGE_PRIMARY="The secret is that ice cream is delicious"'!' \STORMPATH_SSO_MESSAGE_SECONDARY="Yummy"'!' \ --app idsite-demo-app2

    確保使用新創(chuàng)建的Stormpath應(yīng)用程序的完整URL。

    部署時(shí)間:

    git push idsite-demo-app2 master

    最后,ID網(wǎng)站URL更新:

    現(xiàn)在,您可以在待辦事項(xiàng)列表上選中以下復(fù)選框:構(gòu)建和部署SSO應(yīng)用程序。 你完成了!

    您可以登錄到https://idsite-demo-app1.herokuapp.com 。 然后,您可以直接跳至https://idsite-demo-app2.herokuapp.com/restricted/secret ,而無(wú)需再次登錄!

    祝您滿意!

    在本文中,您已經(jīng)創(chuàng)建了一個(gè)Spring Boot Web應(yīng)用程序,該應(yīng)用程序啟用了具有Stormpath的ID站點(diǎn)服務(wù)的Single Sign-On。 Stormpath托管登錄表單以及與創(chuàng)建新用戶和重置密碼相關(guān)的所有其他鏈接和表單。

    通過(guò)一個(gè)控制器中的少量代碼,您就可以為您的應(yīng)用程序認(rèn)證和授權(quán)用戶。 您可以使用Heroku快速部署它。 我很想聽(tīng)聽(tīng)您使用本文中的示例的經(jīng)驗(yàn)。

    如果您有興趣在Spring Boot中使用Stormpath的更多功能,這是我們的Spring Boot Webapp示例快速入門(mén)

    隨時(shí)隨地發(fā)送電子郵件或我個(gè)人的電話。

    建筑物身份管理,包括身份驗(yàn)證和授權(quán)? 嘗試Stormpath! 我們的REST API和強(qiáng)大的Java SDK支持可以消除您的安全風(fēng)險(xiǎn),并且可以在幾分鐘內(nèi)實(shí)現(xiàn)。 注冊(cè) ,再也不會(huì)建立auth了!

    翻譯自: https://www.javacodegeeks.com/2016/10/single-sign-java-20-minutes-spring-boot-heroku.html

    java heroku

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的java heroku_使用Spring Boot和Heroku在20分钟内完成Java的单点登录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。