安装
16. 在本地平台上安装
16.1. 本地平台配置
以下示例 YAML 文件配置了两个名为 和 的本地部署程序帐户:localDev
localDevDebug
spring:
cloud:
skipper:
server:
platform:
local:
accounts:
localDev:
shutdownTimeout: 60
javaOpts: "-Dtest=foo"
localDevDebug:
javaOpts: "-Xdebug"
帐户名称后面的键值对是 、 、 、 和 。
有关更多信息,请参阅 LocalDeployerProperties 的 JavaDocs。javaCmd
workingDirectoriesRoot
deleteFilesOnExit
envVarsToInherit
shutdownTimeout
javaOpts
useSpringApplicationJson
17. 在 Cloud Foundry 上安装
本节包含一个示例 YAML 文件,该文件配置两个名为 和 的 Cloud Foundry 帐户。
如果您使用 Spring Cloud Config Server 来管理 Skipper 的配置属性,这在 Cloud Foundry 上很有用。cf-dev
cf-qa
17.1. Cloud Foundry 配置
您可以修改以下示例 YML 代码段以满足您的需要:
spring:
cloud:
skipper:
server:
platform:
cloudfoundry:
accounts:
cf-dev:
connection:
url: https://api.run.pivotal.io
org: myOrg
space: mySpace
domain: cfapps.io
username: [email protected]
password: drowssap
skipSslValidation: false
deployment:
memory: 2048m
disk: 2048m
services: rabbit
deleteRoutes: false
cf-qa:
connection:
url: https://api.run.pivotal.io
org: myOrgQA
space: mySpaceQA
domain: cfapps.io
username: [email protected]
password: drowssap
skipSslValidation: true
deployment:
memory: 1024m
disk: 1024m
services: rabbitQA
deleteRoutes: false
部署设置是使应用程序的 “v2” 与 “v1” 具有相同的路由。
否则,取消部署 “v1” 将删除路由。deleteRoutes false |
您还可以在本地运行 Skipper 服务器并部署到 Cloud Foundry。
在这种情况下,在文件中指定配置并使用 option 启动服务器会更方便。skipper.yml
--spring.config.additional-location=skipper.yml
如果您用于部署 Skipper,则更适合使用 Cloud Foundry 清单。
您可以修改以下示例manifest.yml以满足您的需要:cf push
applications:
- name: mlp-skipper
host: mlp-skipper
memory: 1G
disk_quota: 1G
timeout: 180
instances: 1
buildpack: java_buildpack
path: spring-cloud-skipper-server.jar
env:
SPRING_APPLICATION_NAME: mlp-skipper
JBP_CONFIG_SPRING_AUTO_RECONFIGURATION: '{enabled: false}'
SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_CLOUDFOUNDRY_ACCOUNTS[pws]_CONNECTION_URL: https://api.run.pivotal.io
SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_CLOUDFOUNDRY_ACCOUNTS[pws]_CONNECTION_ORG: myOrgQA
SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_CLOUDFOUNDRY_ACCOUNTS[pws]_CONNECTION_SPACE: mySpaceQA
SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_CLOUDFOUNDRY_ACCOUNTS[pws]_CONNECTION_DOMAIN: cfapps.io
SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_CLOUDFOUNDRY_ACCOUNTS[pws]_CONNECTION_USERNAME: [email protected]
SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_CLOUDFOUNDRY_ACCOUNTS[pws]_CONNECTION_PASSWORD: drowssap
SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_CLOUDFOUNDRY_ACCOUNTS[pws]_CONNECTION_SKIPSSLVALIDATION: false
SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_CLOUDFOUNDRY_ACCOUNTS[pws]_DEPLOYMENT_DELETEROUTES: false
SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_CLOUDFOUNDRY_ACCOUNTS[pws]_DEPLOYMENT_SERVICES: rabbitmq
services:
- mysqlboost
在前面的清单中,我们将应用程序绑定到服务。
如果未指定服务,则服务器将使用嵌入式数据库。mysqlboost |
从 Skipper 2.0 开始,您必须禁用 Spring 自动重新配置并将配置文件设置为 。cloud |
您必须设置应用程序的 “v2” 与 “v1” 具有相同的路由。
否则,取消部署 “v1” 将删除路由。SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_CLOUDFOUNDRY_ACCOUNTS[pws]_DEPLOYMENT_DELETEROUTES: false |
您必须设置将指定服务绑定到每个已部署应用程序的属性。SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_CLOUDFOUNDRY_ACCOUNTS[pws]_DEPLOYMENT_SERVICES |
您可以在 CloudFoundryDeploymentProperties 中找到有关可配置的部署属性的信息。
在本地计算机上启动 Skipper shell 时,它会尝试连接到默认位置 .
使用 shell 的命令行选项指定服务器的位置。
您也可以使用交互式 shell 命令来设置服务器位置,如下所示:localhost:7577/api
--spring.cloud.skipper.client.serverUri
config
server-unknown:>skipper config --uri https://mlp-skipper.cfapps.io/api
Successfully targeted https://mlp-skipper.cfapps.io/api
skipper:>
17.2. 数据库连接池
从 Skipper 2.0 开始,Spring Cloud 连接器库不再用于创建 DataSource。 现在使用库 java-cfenv,它允许您设置 Spring Boot 属性以配置连接池。
17.3. 最大磁盘配额
默认情况下,Cloud Foundry 中的每个应用程序都以 1G 磁盘配额开始,这可以调整为默认的最大值 2G 的。通过使用 Pivotal Cloud Foundry (PCF) Ops Manager GUI,默认最大值也可以覆盖高达 10G。
此配置与 Spring Cloud Skipper 相关,因为每个部署都由应用程序组成 (通常是 Spring Boot uber-jar 的),并且这些应用程序是从远程 maven 存储库解析的。解决后, 应用程序构件将下载到本地 Maven 存储库以进行缓存和重用。在后台发生此事后, 默认磁盘配额 (1G) 可能会迅速填满,尤其是当我们试验 由独特的应用程序组成。为了克服这个磁盘限制并依赖于 根据您的扩展要求,您可能希望将默认最大值从 2G 更改为 10G。让我们回顾一下 更改默认最大磁盘配额分配的步骤。
在 PCF 的 Ops Manager 中,选择“Pivotal Elastic Runtime”磁贴,然后导航到“Application Developer Controls”选项卡。 将“每个应用程序的最大磁盘配额 (MB)”设置从 2048 (2G) 更改为 10240 (10G)。保存磁盘配额更新,然后单击 “Apply Changes” 完成配置覆盖。
17.4. 管理磁盘使用
即使将 Skipper 配置为使用 10G 空间,也有可能耗尽本地磁盘上的可用空间。
为防止这种情况,无论部署请求是否成功,只要部署应用程序,都会自动删除从外部源(即注册为或资源的应用程序)下载的项目。
此行为最适合容器运行时稳定性比部署期间产生的 I/O 延迟更关键的生产环境。
在开发环境中,部署会更频繁地进行。此外,工件(或更轻的 jar)包含描述应用程序配置属性的元数据
它由与应用程序配置相关的各种操作使用,在预生产活动期间更频繁地执行。
为了在预生产环境中使用更多的磁盘,以牺牲更多的磁盘使用为代价,提供响应速度更快的交互式开发人员体验,您可以将 CloudFoundry deployer 属性设置为。jar
http
maven
jar
metadata
autoDeleteMavenArtifacts
false
如果使用默认运行状况检查类型部署 Skipper,则必须显式监控服务器上的磁盘空间,以避免空间不足。
如果使用运行状况检查类型部署服务器(请参阅下一个示例),则当磁盘空间不足时,服务器将重新启动。
这是由于 Spring Boot 的磁盘空间健康指示器。
您可以使用具有前缀的属性来配置 Disk Space Health Indicator 的设置。port
http
management.health.diskspace
对于版本 1.7,我们正在研究在将工件推送到 Cloud Foundry 之前为服务器使用 Volume Services 来存储工件。.jar
以下示例显示如何将运行状况检查类型部署到名为 :http
/management/health
---
...
health-check-type: http
health-check-http-endpoint: /management/health
18. 在 Kubernetes 上安装
名为 的 docker 镜像可用于 dockerhub 中的 Skipper 服务器。
您可以使用此映像在 Kubernetes 中运行 Skipper 服务器。springcloud/spring-cloud-skipper-server
18.1. Kubernetes 配置
以下示例 YAML 文件在 Kubernetes 集群上配置了两个名为 和 的账户。k8s-dev
k8sqa
spring:
cloud:
skipper:
server:
platform:
kubernetes:
accounts:
k8s-dev:
namespace: devNamespace
cpu: 4
k8s-qa:
namespace: qaNamespace
memory: 1024m
这些账户对应于不同的命名空间。 我们正在研究如何支持连接到不同的 Kubernetes 集群。
您可以在 KubernetesDeployerProperties 中找到有关可配置的部署属性的更多信息
19. 数据库配置
关系数据库用于存储流定义和部署信息。 Spring Cloud Skipper 提供适用于 MariaDB、MySQL、Oracle、PostgreSQL、Db2、SQL Server 和 H2 的架构。架构是在服务器启动时自动创建的。
无需额外配置即可使用适用于 MariaDB、MySQL(通过 MariaDB 驱动程序)、PostgreSQL、SQL Server 的 JDBC 驱动程序。要使用任何其他数据库,您需要将相应的 JDBC 驱动程序 jar 放在服务器的 Classpath 上,如此处所述。 |
要配置数据库,必须设置以下属性:
-
spring.datasource.url
-
spring.datasource.username
-
spring.datasource.password
-
spring.datasource.driver-class-name
无论数据库如何,和 都是相同的。但是,每个数据库的 and 会有所不同,如下所示。username
password
url
driver-class-name
数据库 | spring.datasource.url | spring.datasource.driver-class-name | 包括驱动程序 |
---|---|---|---|
MariaDB 10.4+ |
jdbc:mariadb://${db-hostname}:${db-port}/${db-name} |
org.mariadb.jdbc.驱动程序 |
是的 |
MySQL 5.7 版本 |
jdbc:mysql://${db-hostname}:${db-port}/${db-name}?permitMysqlScheme |
org.mariadb.jdbc.驱动程序 |
是的 |
MySQL 8.0+ 版本 |
jdbc:mariadb://${db-hostname}:${db-port}/${db-name}?allowPublicKeyRetrieval=true&useSSL=false&autoReconnect=true&permitMysqlScheme[1] |
org.mariadb.jdbc.驱动程序 |
是的 |
PostgresSQL |
jdbc:postgres://${db-hostname}:${db-port}/${db-name} |
org.postgresql.驱动程序 |
是的 |
SQL 服务器 |
jdbc:sqlserver://${db-hostname}:${db-port};数据库名称=${数据库名称}&encrypt=false |
com.microsoft.sqlserver.jdbc.SQLServerDriver |
是的 |
DB2 |
jdbc:db2://${db-hostname}:${db-port}/{db-name} |
com.ibm.db2.jcc.DB2Driver |
不 |
神谕 |
jdbc:oracle:thin:@${db-hostname}:${db-port}/{db-name} |
oracle.jdbc.Oracle驱动程序 |
不 |
19.1. H2
如果未配置其他数据库并且 H2 驱动程序已添加到服务器 Classpath 中,则 Spring Cloud Skipper 使用 H2 数据库的嵌入式实例作为默认值。
H2 适用于开发目的,但不建议用于生产,也不支持作为外部模式。 |
要使用 H2,请将 JDBC 驱动程序添加到 Classpath 中,并且不要配置任何其他数据库。com.h2database:h2:2.1.214
19.2. 添加自定义 JDBC 驱动程序
要为数据库添加自定义驱动程序(例如 Oracle),您应该重新构建 Skipper Server 并将依赖项添加到 Maven 文件。
您需要修改 module 的 maven。
GitHub 存储库中有 GA 发布标签,因此您可以切换到所需的 GA 标签,以在生产就绪代码库中添加驱动程序。pom.xml
pom.xml
spring-cloud-skipper
要为 Spring Cloud Skipper 服务器添加自定义 JDBC 驱动程序依赖项,请执行以下操作:
-
选择与要重建的服务器版本相对应的标记,并克隆 github 存储库。
-
编辑spring-cloud-skipper-server/pom.xml并在该部分中添加所需数据库驱动程序的依赖项。在以下示例中,已选择 Oracle 驱动程序:
dependencies
<dependencies>
...
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
</dependency>
...
</dependencies>
-
按照构建 Spring Cloud Skipper = 安全性中所述构建应用程序
默认情况下,Spring Cloud Skipper 服务器是不安全的,并在未加密的 HTTP 连接上运行。 您可以通过启用 HTTPS 并要求客户端使用 OAuth 2.0 进行身份验证来保护您的 REST 终端节点
默认情况下,REST 终端节点(管理、管理和运行状况)不需要经过身份验证的访问。 |
20. 启用 HTTPS
默认情况下,REST 终端节点使用纯 HTTP 作为传输。
您可以通过向配置添加证书来切换到 HTTPS,如以下示例所示:skipper.yml
server:
port: 8443 (1)
ssl:
key-alias: yourKeyAlias (2)
key-store: path/to/keystore (3)
key-store-password: yourKeyStorePassword (4)
key-password: yourKeyPassword (5)
trust-store: path/to/trust-store (6)
trust-store-password: yourTrustStorePassword (7)
1 | 由于默认端口为 ,您可以选择将端口更改为更常见的 HTTPS 典型端口。7577 |
2 | 密钥存储在密钥库中的别名(或名称)。 |
3 | 密钥库文件的路径。也可以使用 Classpath 前缀指定 Classpath 资源:classpath:path/to/keystore |
4 | 密钥库的密码。 |
5 | 密钥的密码。 |
6 | 信任库文件的路径。也可以使用 Classpath 前缀指定 Classpath 资源:classpath:path/to/trust-store |
7 | 信任存储的密码。 |
您可以使用以下参数引用 YAML 文件:--spring.config.additional-location=skipper.yml
|
如果启用了 HTTPS,它将完全取代 HTTP 作为 REST 端点交互的协议。 然后,普通 HTTP 请求将失败。因此,您必须确保相应地配置 Skipper shell。 |
20.1. 使用自签名证书
出于测试目的或在开发过程中,创建自签名证书可能很方便。 要开始使用,请运行以下命令以创建证书:
$ keytool -genkey -alias skipper -keyalg RSA -keystore skipper.keystore \
-validity 3650 -storetype JKS \
-dname "CN=localhost, OU=Spring, O=Pivotal, L=Holualoa, ST=HI, C=US" (1)
-keypass skipper -storepass skipper
1 | CN 是这里唯一重要的参数。它应与您尝试访问的域匹配,例如 .localhost |
然后将以下内容添加到您的文件中:skipper.yml
server:
port: 8443
ssl:
enabled: true
key-alias: skipper
key-store: "/your/path/to/skipper.keystore"
key-store-type: jks
key-store-password: skipper
key-password: skipper
这就是 Skipper Server 所需的全部内容。 启动服务器后,您应该能够在 https://localhost:8443/ 访问它。 由于这是自签名证书,因此您应该在浏览器中点击警告。你需要忽略这一点。
20.2. 自签名证书和 Shell
默认情况下,自签名证书是 shell 的一个问题。 要使 shell 使用自签名证书,还需要执行其他步骤。 有两个选项可用:
20.2.1. 将自签名证书添加到 JVM Truststore 中
为了使用 JVM truststore 选项,我们需要 从密钥库中导出之前创建的证书:
$ keytool -export -alias skipper -keystore skipper.keystore -file skipper_cert -storepass skipper
接下来,我们需要创建一个 Shell 使用的信任库:
$ keytool -importcert -keystore skipper.truststore -alias skipper -storepass skipper -file skipper_cert -noprompt
现在,您可以使用以下 JVM 参数启动 Skipper shell:
$ java -Djavax.net.ssl.trustStorePassword=skipper \
-Djavax.net.ssl.trustStore=/path/to/skipper.truststore \
-Djavax.net.ssl.trustStoreType=jks \
-jar spring-cloud-skipper-shell-2.11.5.jar
如果在通过 SSL 建立连接时遇到问题,可以通过将 JVM 参数设置为 来启用其他日志记录。javax.net.debug ssl |
请记住使用类似于以下内容的 config 命令来定位 Skipper 服务器:
skipper:>skipper config --uri https://localhost:8443/api
21. OAuth 2.0 安全性
OAuth 2.0 允许您将 Spring Cloud Skipper 集成到单点登录 (SSO) 环境中。 您可以使用以下 OAuth2 授权类型:
-
密码:由 shell(和 REST 集成)使用,因此您可以使用用户名和密码登录
-
客户端凭证:直接从您的 OAuth 提供商检索访问令牌,并将其传递给 HTTP 标头中的 Skipper 服务器。
Authorization
可以通过两种方式访问 REST 端点:
-
基本身份验证:使用密码授权类型对 OAuth2 服务进行身份验证。
-
Access Token:使用 Client Credentials 授权类型
在设置身份验证时,我们强烈建议您同时启用 HTTPS,尤其是在生产环境中。 |
您可以通过设置环境变量或将以下块添加到来启用 OAuth2 身份验证:skipper.yml
security:
oauth2:
client:
client-id: myclient (1)
client-secret: mysecret
access-token-uri: http://127.0.0.1:9999/oauth/token
user-authorization-uri: http://127.0.0.1:9999/oauth/authorize
resource:
user-info-uri: http://127.0.0.1:9999/me
spring:
security:
oauth2: (1)
client:
registration:
uaa: (2)
client-id: myclient
client-secret: mysecret
redirect-uri: '{baseUrl}/login/oauth2/code/{registrationId}'
authorization-grant-type: authorization_code
scope:
- openid (3)
provider:
uaa:
jwk-set-uri: http://uaa.local:8080/uaa/token_keys
token-uri: http://uaa.local:8080/uaa/oauth/token
user-info-uri: http://uaa.local:8080/uaa/userinfo (4)
user-name-attribute: user_name (5)
authorization-uri: http://uaa.local:8080/uaa/oauth/authorize
resourceserver:
opaquetoken:
introspection-uri: http://uaa.local:8080/uaa/introspect (6)
client-id: dataflow
client-secret: dataflow
cloud:
skipper:
security:
authorization:
provider-role-mappings: (7)
uaa:
map-oauth-scopes: true
role-mappings:
ROLE_VIEW: skipper.view
ROLE_CREATE: skipper.create
ROLE_MANAGE: skipper.manage
1 | 提供此属性会激活 OAuth2 安全性 |
2 | 提供程序 ID。可以指定多个提供商 |
3 | 由于 UAA 是 OpenID 提供程序,因此您至少必须指定范围。
如果您的提供程序还提供了其他范围来控制角色分配,则
您还必须在此处指定这些范围openid |
4 | OpenID 终端节点。用于检索用户名等用户信息。命令的。 |
5 | 包含用户名的响应的 JSON 属性 |
6 | 用于内省和验证直接传入的令牌。命令的。 |
7 | 用于授权的角色映射。
您可以使用 验证基本身份验证是否正常工作,如下所示:curl |
`curl -u myusername:mypassword http://localhost:7577/`
因此,您应该会看到可用 REST 终端节点的列表。
除了基本身份验证之外,您还可以提供访问令牌来访问 REST API。
为此,请从 OAuth2 提供商处检索 OAuth2 访问令牌,然后使用 HTTP 标头将该访问令牌传递给 REST API,如下所示:Authorization
curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://localhost:7577/
21.1. OAuth REST 端点授权
Spring Cloud Skipper 支持以下角色:
-
VIEW:用于与检索 state 相关的任何内容。
-
CREATE:用于涉及创建、删除或更改系统状态的任何内容。
-
MANAGE:用于启动管理终端节点。
有关哪些 REST 端点需要哪些角色的规则在模块中指定。application.yml
spring-cloud-skipper-server-core
尽管如此,如果需要,您可以覆盖这些 ID。
配置采用 YAML 列表的形式(因为某些规则可能优先于其他规则)。
因此,您需要复制/粘贴整个列表并根据您的需要进行定制(因为无法合并列表)。
请始终引用您的 版本,因为下面复制的代码段可能已过时。
默认规则如下:application.yml
# About
- GET /api/about => hasRole('ROLE_VIEW')
# AppDeployerDatas
- GET /api/appDeployerDatas => hasRole('ROLE_VIEW')
# Deployers
- GET /api/deployers => hasRole('ROLE_VIEW')
## Releases
- GET /api/releases => hasRole('ROLE_VIEW')
# Status
- GET /api/release/status/** => hasRole('ROLE_VIEW')
# Manifest
- GET /api/release/manifest/** => hasRole('ROLE_VIEW')
# Upgrade
- POST /api/release/upgrade => hasRole('ROLE_CREATE')
# Rollback
- POST /api/release/rollback/** => hasRole('ROLE_CREATE')
# Delete
- DELETE /api/release/** => hasRole('ROLE_CREATE')
# History
- GET /api/release/history/** => hasRole('ROLE_VIEW')
# List
- GET /api/release/list => hasRole('ROLE_VIEW')
- GET /api/release/list/** => hasRole('ROLE_VIEW')
# Packages
- GET /api/packages => hasRole('ROLE_VIEW')
# Upload
- POST /api/package/upload => hasRole('ROLE_CREATE')
# Install
- POST /api/package/install => hasRole('ROLE_CREATE')
- POST /api/package/install/** => hasRole('ROLE_CREATE')
# Delete
- DELETE /api/package/** => hasRole('ROLE_CREATE')
# PackageMetaData
- GET /api/packageMetadata => hasRole('ROLE_VIEW')
- GET /api/packageMetadata/** => hasRole('ROLE_VIEW')
# Repositories
- GET /api/repositories => hasRole('ROLE_VIEW')
- GET /api/repositories/** => hasRole('ROLE_VIEW')
# Boot Endpoints
- GET /actuator/** => hasRole('ROLE_MANAGE')
每行的格式如下:
HTTP_METHOD URL_PATTERN '⇒' SECURITY_ATTRIBUTE
哪里
-
HTTP_METHOD 是一种 HTTP 方法,大写。
-
URL_PATTERN 是一种 Ant 样式的 URL 模式。
-
SECURITY_ATTRIBUTE 是 SPEL 表达式(请参见 docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#el-access)
-
其中每个部分都由一个或多个空格字符(空格、制表符等)分隔。
请注意,上面确实是一个 YAML 列表,而不是位于键下的映射(因此在每行的开头使用 '-' 破折号)。spring.cloud.skipper.security.authorization.rules
21.1.1. 用户和角色
Spring Cloud Skipper 不对如何将角色分配给用户做出任何假设。
由于安全角色的确定非常特定于环境,因此默认情况下,Spring Cloud Data Skipper 使用该类将所有角色分配给经过身份验证的 OAuth2 用户。DefaultAuthoritiesExtractor
您可以通过提供自己的 Spring bean 定义来自定义该行为,该定义扩展了 Spring Security OAuth 的接口。
在这种情况下,自定义 bean 定义优先于 Spring Cloud Skipper 提供的默认 bean 定义。AuthoritiesExtractor
21.2. 使用 Spring Cloud Skipper shell 进行 OAuth 身份验证
如果您的 OAuth2 提供商支持密码授予类型,则可以启动 使用以下命令的 Skipper shell:
$ java -jar spring-cloud-skipper-shell-2.11.5.jar \
--spring.cloud.skipper.client.serverUrl=http://localhost:7577 \
--spring.cloud.skipper.client.username=my_username \
--spring.cloud.skipper.client.password=my_password
启用 Spring Cloud Skipper 的身份验证后,如果您想使用地狱,底层 OAuth2 提供程序必须支持密码 OAuth2 授权类型。 |
在 Skipper shell 中,您还可以使用以下命令提供凭据:
skipper:> skipper config --uri https://localhost:7577/api --username my_username --password my_password
成功定位后,您应该会看到以下输出:
Successfully targeted http://localhost:7577/api
skipper:>
21.3. OAuth2 身份验证示例
本节提供了 Skipper 的一些常见安全安排示例:
21.3.1. 本地 OAuth2 服务器
借助 Spring Security OAuth,您可以 可以使用以下注释创建自己的 OAuth2 服务器:
-
@EnableResourceServer
-
@EnableAuthorizationServer
您可以在 https://github.com/ghillert/oauth-test-server/ 中找到一个工作示例应用程序。
为此,请克隆项目、构建项目并启动项目。 然后使用相应的 Client ID 和 Client Secret 配置 Spring Cloud Skipper。
此选项仅用于开发或演示目的。 |
21.3.2. 使用 UAA 进行身份验证
如果您需要设置生产就绪的 OAuth 提供程序,则可能需要考虑 使用 CloudFoundry 用户帐户和身份验证 (UAA) 服务器。虽然它被 Cloud Foundry 中,它也可以单独使用。有关更多信息,请参阅 github.com/cloudfoundry/uaa。