java heroku
建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现。 注册 ,再也不会建立auth了!
大规模更新
我最初为本文撰写的代码更适合非Spring Boot环境。
Stormpath为其IDSite服务现有的Spring Boot集成使为其编写代码变得轻而易举 。 它利用了Spring Boot必须提供的所有自动配置。
如果您是新手,请继续阅读。 如果您以前阅读过它,请跳至“ 更新Spring Boot Webapp”部分。 您会看到RestrictedController
从40行减少到15行,从4种方法减少到1行。
主要事件–轻松单点登录
我喜欢Java如何保持自我创新以保持最新和相关性(我可以听到我所有的Node.js和Ruby朋友吟)。 支持Java的生态系统也在跟上新的发展。 如今,与使用Python或Node.js一样快地构建,测试和部署丰富的Java Web应用程序一样容易(如今越来越难了)。
其中之一就是Spring Boot,它使在几分钟内构建和启动Java Webapp成为现实。 Heroku对Java支持的关注也加快了步伐。
最后,Stormpath意味着开发人员不必构建身份验证和授权工作流。 Stormpath的身份API和单点登录功能( 通过IDSite )提供了开箱即用的帐户注册,登录,电子邮件工作流以及跨应用程序的单点登录。 这些流程包括默认表单和视图,所有这些都是可定制的。
在这篇文章中,我们将把所有这些放在一起,并在20分钟内在您的应用程序中获得单点登录的额外好处。
继续阅读-滴答滴答!
这是本教程所需的先决条件:
- Gradle2.x
- 在Mac上:
brew install gradle
- 在Mac上:
- Heroku
- 创建一个Heroku帐户
- 一个Stormpath帐户(我们还将在下面介绍)
注意 :您可以轻松使用Maven 。 如果您更喜欢此构建工具,则本文附带的源代码包括pom.xml
。
为了使其变得超级容易,我们在每个示例中都添加了一个方便的Heroku部署按钮,因此您可以立即查看它的运行情况。 如果您花了超过20分钟的时间,请在评论中告诉我们是什么阻止了您。 我们喜欢反馈。
启动Spring Boot – 5分钟教程
注意 :如果您已经对Spring Boot有所了解,则可能需要跳到下一部分。 在那里–我刚刚为您节省了5分钟。 别客气。
本节使用github存储库中的SpringBootBasic标签。
Spring Boot使您能够启动一个功能全面的Java Web应用程序,就像启动一个简单的Java应用程序一样。 它具有main
方法和所有内容。 例如, @SpringBootlApplication
注释执行@Configuration
@EnableAutoConfiguration
, @ComponentScan
@EnableAutoConfiguration
和@ComponentScan
注释(具有默认属性)在@EnableAutoConfiguration
Spring应用程序中所做的所有操作。
令Spring Boot如此出色且如此轻松工作的是Starter软件包,这些软件包增加了功能,包括默认配置。 我们将在Stormpath Spring Boot Thymeleaf Starter的所有Stormpath功能中进一步使用它们来创建新用户,登录和更改密码。 您要做的只是在build.gradle
或pom.xml
文件中引用一个jar。
对于我们的基本示例,我们将包括核心Spring Boot Starter Web和Thymeleaf Spring Boot Starter。 Thymeleaf是现代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应用程序正常运行,我们还需要三个文件。
IDSiteDemoApplication.java
是应用程序的入口点:
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
批注设置了启动应用程序所需的所有配置。
HomeController.java
映射URI并解析为Thymeleaf模板:
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
批注将此类设置为控制器,并将其配置为处理/
URI上的请求。 只需将String home
钩子返回到Thymeleaf模板体系结构中,即可将我们引到最终文件:
位于templates
文件夹中的home.html
是浏览至/
时将呈现的模板:
<!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>
注意 :您可能会注意到上面模板中的th:include
指令。 这是Thymeleaf体系结构的一部分,用于将文件包含在其他文件中。 该示例的完整源代码包含templates/fragments/head.html
文件。
那好吧 让我们通过启动最基本的Spring Boot应用程序来完善前5分钟。
gradle clean build
可以解决问题。 然后: java -jar build/libs/idsite_demo-0.1.0.jar
为SpringBoot身份验证添加Stormpath
本节使用github存储库中的SpringBootStormpath标记。
在本节中,我们将:
- 创建一个Stormpath帐户
- 生成Stormpath API密钥对
- 将应用程序添加到您的Stormpath帐户
- 更新您的Spring Boot网络应用程序以显示一些Stormpath应用程序信息
- 点火并观看它的工作情况
创建一个Stormpath帐户
转到“风暴路径注册”页面 。 输入您的名字和姓氏,公司,电子邮件和密码。
单击注册。
点击收到的验证电子邮件中的链接。 然后,您将看到为您生成的租户名称。
登录。 做完了
注意 :有关多租户应用程序的更多信息,我们上面有一个方便的博客文章 。
生成Stormpath API密钥对
登录到Stormpath帐户后,您将看到以下屏幕:
单击Create API Key
按钮。
单击Create API Key
按钮并保存文件。
存储在该文件中的API密钥用于向Stormpath验证您的应用程序。 在该文件中,有一个apiKey.id
和apiKey.secret
。 您永远都不想暴露apiKey.secret
。 因此,例如,您永远不需要将api密钥文件签入git存储库。 稍后,当我们部署到Heroku时,我将向您展示如何配置您的应用程序以使用api密钥,而不必将它们存储在git存储库中。
Stormpath使用了详细记录的配置默认值,使使用我们的API变得超级容易。 这些默认值之一是api密钥文件位置。 Java SDK将自动在您的主目录中查找文件:
~/.stormpath/apiKey.properties
如果将下载的文件复制到该路径,则不需要其他配置即可从应用程序连接到Stormpath。
将应用程序添加到您的Stormpath帐户
返回管理控制台,点击“应用程序”标签。
您会注意到已经存在两个应用程序: My Application
和Stormpath
。 他们在注册Stormpath时自动设置。 如果没有定义任何其他Stormpath应用程序,则Spring Boot应用程序不需要进一步的配置。 默认情况下,它将连接到已定义的“ My Application
实例。
但是,这里的最终目标是获得一些Single Signon的好处,为此,我们需要多个应用程序才能登录。
因此,让我们创建另一个Stormpath应用程序。 单击Create Application
按钮。
让我们在这里分解选项。
名称和(可选)描述不言自明。 而且,我们希望此应用程序已启用是有意义的。
默认情况下,“ Create new Directory
复选框处于选中状态。 对于我们的示例,我未选中此选项。 相反,我已经选中了“将Map Account Stores to this Application
复选框,并选择了“ My Application Directory
。 最后,我单击了“ DEFAULT ACCOUNT LOCATION
和“ DEFAULT GROUP LOCATION
单选按钮。
那么,这是怎么回事? Stormpath的组织方式,应用程序可以使用任意数量的目录作为其帐户存储。 Stormpath目录只是包含帐户和组的存储桶。 出于我们的目的,我们可以使用注册时为我们自动创建的目录My Application Directory
。 在下面的奖励部分,我将向您展示如何创建特定类型的目录,以将Google身份验证添加到您的应用中。 剧透警报:超级容易。
更新您的Spring Boot Webapp
让我们将基本的Spring Boot应用程序连接到Stormpath,以显示一些Stormpath应用程序信息。 这将为能够与ID网站服务集成奠定基础。
看看我们的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";}
}
现在,我们利用了Spring的@Autowired
功能,为我们提供了Stormpath Application
对象的句柄。 使用它,我们在Model
对象中设置应用程序的名称和描述,并将其传递给我们的模板。
这将我们带入下一个更改,即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}]]
。
最后,我们将进行一个小(但功能强大)的更新以build.gradle
文件。 我们正在更改此行:
compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf', version:'1.2.5.RELEASE'
对此:
compile group: 'com.stormpath.spring', name: 'spring-boot-starter-stormpath-thymeleaf', version:'1.0.RC4.5'
我们已经将Spring的Thymleaf Spring Boot Starter换成Stormpath的了。 这是很酷的一点:此Starter中包含了与Stormpath Java SDK交互所需的一切。
我们的应用程序文件中总共更改了7行,并添加了一个文件application.properties
以开始挂接到Stormpath。
构建您的Java Web应用程序
我们在这里需要的其他一点信息是您创建的Stormpath应用程序的URL。
您可以导航到您的应用程序,从管理仪表板中找到它。
假设您将api密钥文件放在~/.stormpath/apiKey.properties
的默认位置,这是运行此示例所需的全部工作:
gradle clean build
STORMPATH_APPLICATION_HREF=https://api.stormpath.com/v1/applications/6bHOGj63WM8cfC2nhD3Pki \java -jar build/libs/idsite_demo-0.1.0.jar
当然,您需要放入自己的STORMPATH_APPLICATION_HREF
。
您可以看到浏览器中的页面现在正在显示来自我们创建的Stormpath应用程序的信息。
使用IDSite的Stormpath单点登录…
…你猜到了。 五分钟。
本节使用github存储库中的SpringBootStormpathIDSite标记。
您可能有向应用程序添加身份验证和授权的经验。 也许您是预先完成的。 也许那是您说过要达成的目标-最终。 无论哪种方式,这都很痛苦。 而且,它与您要解决的问题无关。 但是,这是至关重要且必要的。
在本节中,我们将添加以下功能:创建新用户,登录,将页面访问权限限制为仅那些已登录用户和更改密码。 并且,我们将以最少的编码和最少的配置来做到这一点。
标识站点配置
首先,我们将从管理控制台设置IDSite。 单击“ ID站点”选项卡。
滚动时,您会发现有许多字段带有标签Upgrade Required
。 基本ID网站功能可与我们的免费套餐一起使用,我们将在稍后看到。 具有自定义域或自定义用于身份验证的模板需要付费订阅。
在这里,我们只是要更新两个字段并保存设置。
为了安全起见,您必须指定一个允许与ID网站建立连接的URL列表。
在“ Authorized Javascript Origin URLs
字段中输入http://localhost:8080
。
出于安全原因,您必须指定授权重定向URL的列表。
在Authorized Redirect URLs
字段中输入http://localhost:8080/
并在另一行中输入http://localhost:8080/idSiteResult
。
单击Save
按钮。 这就是配置ID站点以在应用程序中启用身份验证和授权所需要的。
让我们退后一步,用我们5分钟中宝贵的30秒时间来查看ID网站背后的机制。
当用户尝试访问您网站的受限区域时,如果他们尚未拥有有效的会话,他们将被重定向到您的ID网站。
他们将看到一个熟悉的登录表单,其中包含用于创建新用户和重置其密码的选项。
这个是从哪里来的? 这是魔术吗? 这是使用ID Site的一部分-通常由您自己编写的所有身份验证和授权流程。 不良。 (哎呀,这有点苛刻。但是,认真的说,由于身份验证代码实施不当,您多久阅读一次有关安全漏洞的信息?)
身份验证后,它们将被重定向回您指定的URL,并将能够访问该受限内容。
您的用户似乎完全熟悉此过程-甚至平凡。 您将只需很少的配置或编码即可完成此任务。
更新您的Spring Boot Webapp
启用对您的Spring启动应用程序IDSite是在一个单一的财产处理application.properties
。 我们还将另外两条线来控制流。
stormpath.web.idSite.enabled = true
stormpath.web.login.nextUri = /restricted/secret
stormpath.web.logout.nextUri = /?status=logout
第1行为您的应用程序启用IDSite。 对。 这就是全部!
IDSite具有默认的标准身份验证流。 默认情况下,在验证用户身份之后, /login
重定向到/
,在会话被销毁后, /logout
重定向到/login?status=logout
。
对于我们的应用程序,一旦用户通过身份验证,我们希望他们重定向回/restricted/secret
。 而且,一旦用户注销,我们将以状态logout
将他们重定向回前门。 上面的第2行和第3行完成了此操作。
我们在home.html
模板中添加了一行,以启动整个登录流程:
<a class="btn btn-success" href="/restricted/secret">Click here for a secret message.</a>
我们将在一个新的控制器中添加大约15行代码(总计)以挂接到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行使用标准的Spring工具来注入值。
引用环境变量ala @environment['stormpath.sso.message.primary']
提取在applications.properties
中找到的属性。
这是最重要的部分:Stormpath具有将系统环境变量转换为应用程序环境变量的内置工具。 这使我们在Heroku这样的部署环境中设置环境变量变得非常容易。
它是这样工作的:将系统环境变量转换为小写,并将下划线替换为句点。
因此, STORMPATH_SSO_MESSAGE_PRIMARY
被转换为stormpath.sso.message.primary
。
crossLink
用于单点登录的环境。 此变量包含指向IDSite中设置的另一个应用程序的受限页面的完全限定URL。
messagePrimary
和messageSecondary
用于设置在受限页面上显示的消息。
这三个变量使我们可以将相同的代码库部署到多个Heroku应用程序,并在受限页面上显示不同的消息。
这是IDSite在幕后发生的事情:
- 在主页上,单击“
Click here for a secret message.
链接到/restricted/secret
。 - 根据
@RequestMapping
注释输入RestrictedController
的secret
方法。 - 由于尚未建立会话,因此
account
变量将显示为null
。 - 根据第22行的条件,您将被重定向到
/login
页面。 - 登录页面由您的IDSite托管。
- 输入凭据并单击“
Login
按钮后,您将被重定向回您的应用程序。 - 您的Spring Boot应用程序会自动处理IDSite重定向回的
/idSiteResult
回调。 - 基于在设置
applications.properties
,内置IDSite回调处理程序将重定向到/restricted/secret
- 这一次,有一个会话,
account
变量将不会为null
。 - 最后,将返回
restricted/secret
模板。
第6行和第10行之间的所有重定向都在眨眼之间发生。
让我们看一下新模板, 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网站进行交互的角度来看,这里有两行有趣的内容。
<h1 th:inline="text">Hey, [[${account.fullName}]]</h1>
此行访问Account
的fullName
属性,该属性在传入模板的模型中自动设置。
<a class="btn btn-danger" href="/logout">Log Out</a>
/logout
端点由IDSite自动处理,并销毁现有会话。
启动您的Webapp并试用
像以前一样启动应用程序:
gradle clean build
STORMPATH_APPLICATION_HREF=https://api.stormpath.com/v1/applications/6bHOGj63WM8cfC2nhD3Pki \java -jar build/libs/idsite_demo-0.1.0.jar
由于我们尚未在Stormpath目录中定义任何用户,因此让我们创建一个新用户,然后确保我们可以以该用户身份登录和注销。
首先,浏览到前门: http://localhost:8080
单击友好的绿色按钮。
点击Create an Account
链接。
单击友好的绿色按钮。
晕! 我们进来了!
如果现在单击绿色按钮,将带您回到主页。 如果然后单击主页上的绿色按钮,则将直接转到受限页面。 您将不会再看到登录表单。 这是因为您建立了有效的会话。
如果单击红色按钮,您将注销并重定向到主页。 单击绿色按钮将您带入会话,这将使您再次进入登录表单。
您可能会注意到,创建帐户后,我们将立即登录并发送到受限页面。 您可以通过在Stormpath管理控制台中要求电子邮件验证作为帐户创建过程的一部分来放慢速度。
注意 :存在一个已知问题,您无法在同一会话中登录到Stormpath Admin仪表板并使用ID Site进行身份验证。 我们正在努力尽快解决此问题。 它永远不会影响您的用户,因为它们永远不会出现在您的Stormpath Admin仪表板中。 目前,使用Stormpath Admin Dashbaord时,请使用单独的浏览器配置文件或单独的浏览器实例。
在5分钟内使用Heroku进行单点登录
本节使用github存储库中的SpringBootStormpathIDSite标记。
注意 :如果要测试SSO而不自行部署,则可以使用上方的Heroku Deploy按钮部署两个不同的Heroku Apps。
! 回家舒展! 那么,我一直在听到这么多的SSO是什么? 有了我们建立的基础,我们现在可以将该Web应用程序的多个实例部署到Heroku。 所以呢? 我会告诉你“那又怎样!”
我们可以部署Web应用程序的多个实例虽然很新颖,但真正赋予它强大功能的是ID Site的单一登录功能。 在本节结束时,您将看到通过登录该Web应用程序的一个实例,您可以浏览到该Web应用程序的另一个实例的受限页面, 而无需再次登录。
首先,我们需要添加一个文件,以便Heroku知道如何启动我们的应用程序。 这是一个单行的Procfile
:
web: java $JAVA_OPTS -Dserver.port=$PORT -jar target/*.jar
注意bash
样式变量: $PORT
。 这是由Heroku自动填充的,不需要我们明确设置。
让我们设置和部署一个Heroku应用程序,并确保一切正常
heroku apps:create idsite-demo-app1 --remote idsite-demo-app1
注意命令末尾的--remote
。 Heroku自动将git
远程添加到本地存储库,以便能够部署您的应用程序。 默认情况下,此遥控器将命名为heroku
。 由于我们将部署该应用程序的多个实例,因此我们需要不同的远程名称。
现在,我们已经创建了应用程序,我们需要设置一些配置参数。 这是秘密秘诀的一部分,它使我们可以部署相同的代码库,但将Web应用程序链接到不同的Stormpath应用程序。
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
假设您已经将另一个名为idsite-demo-app2
应用程序部署到了Heroku。 该应用程序的受限页面上使用STORMPATH_SSO_CROSS_LINK
链接到其他应用程序。 一切设置正确后,您无需再次登录。 这就是单点登录的强大功能!
还记得我之前说过的Stormpath如何进行自我配置的好处之一是,您不需要在代码中嵌入敏感的api密钥信息吗? 这就是所有的地方。 在上面的命令中,我们为Heroku实例设置环境变量。 Stormpath SDK自动检查STORMPATH_API_KEY_ID
, STORMPATH_API_KEY_SECRET
和STORMPATH_APPLICATION_HREF
环境变量是否存在。 如果存在,则SDK在与API交互时将自动使用这些环境变量中的值。 这就是将我们的Spring Boot Web应用程序连接到正确的Stormpath应用程序的原因。
好。 设置好舞台。 让我们部署我们的应用程序!
git push idsite-demo-app1 master
这会产生大量输出,但让我们看一下其中的一些亮点:
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
发现进程类型。 在这种情况下,它是web
。
我们第一个应用程序的最后一项工作是将ID Site配置为接受来自它的连接并重定向到它。 跳回到ID站点的管理控制台,然后将https://idsite-demo-app1.herokuapp.com
添加到“授权Javascript原始URL”列表中,然后添加https://idsite-demo-app1.herokuapp.com/
和https://idsite-demo-app1.herokuapp.com/idSiteResult
到授权重定向URL列表。
确保单击屏幕底部的“ Save
按钮。
并且, https ://idsite-demo-app1.herokuapp.com/准备就绪! 看看这个。 创建一个帐户。 登录并注销。 玩得开心。
现在,我们到达了SSO应许之地的大门。 这就是所有要做的事情:
- 创建另一个Stormpath应用程序
- 创建另一个Heroku应用程序
- 设置新的Heroku应用程序的配置
- 将我们的Spring Boot应用程序部署到新的Heroku应用程序
- 更新我们的ID网站,以包括用于授权来源和重定向的新URL
我们只是在漂洗并重复我们以前所做的事情。
让我们创建新的Stormpath应用程序:
请注意,我们正在为此新应用程序映射相同的帐户存储。
是时候创建一个新的Heroku应用程序了
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
确保使用新创建的Stormpath应用程序的完整URL。
部署时间:
git push idsite-demo-app2 master
最后,ID网站URL更新:
现在,您可以在待办事项列表上选中以下复选框:构建和部署SSO应用程序。 你完成了!
您可以登录到https://idsite-demo-app1.herokuapp.com 。 然后,您可以直接跳至https://idsite-demo-app2.herokuapp.com/restricted/secret ,而无需再次登录!
祝您满意!
在本文中,您已经创建了一个Spring Boot Web应用程序,该应用程序启用了具有Stormpath的ID站点服务的Single Sign-On。 Stormpath托管登录表单以及与创建新用户和重置密码相关的所有其他链接和表单。
通过一个控制器中的少量代码,您就可以为您的应用程序认证和授权用户。 您可以使用Heroku快速部署它。 我很想听听您使用本文中的示例的经验。
如果您有兴趣在Spring Boot中使用Stormpath的更多功能,这是我们的Spring Boot Webapp示例快速入门
随时随地发送电子邮件或我个人的电话。
建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现。 注册 ,再也不会建立auth了!
翻译自: https://www.javacodegeeks.com/2016/10/single-sign-java-20-minutes-spring-boot-heroku.html
java heroku