第 1 章 配置身份存储
1.1. 创建 filesystem-realm 复制链接链接已复制到粘贴板!
1.1.1. Elytron 中的文件系统域 复制链接链接已复制到粘贴板!
有了文件系统安全域 filesystem-realm ,您可以在 Elytron 中使用基于文件系统的身份存储来存储用户凭证和属性。Elytron 将每个身份以及关联的凭证和属性存储在文件系统的 XML 文件中。XML 文件的名称是身份的名称。您可以将多个凭证和属性与每个身份关联。
默认情况下,身份存储在文件系统中,如下所示:
Elytron 对存储身份的目录结构应用两级目录哈希。例如,名为 "user1" 的身份存储在
u/s/user1.xml。这样做是为了克服某些文件系统对您可以在单个目录中存储的文件数量的限制,以及出于性能方面的原因。
使用
levels属性配置要应用的目录哈希的级数。在被用作文件名之前,身份名称是 Base32 编码的。这样做的原因是某些文件系统区分大小写,或者可能会限制文件名中允许的字符集。
您可以通过将属性
encoded设为false来关闭编码。
有关其他属性及其默认值的详情,请参考 filesystem-realm 属性。
Encryption
当将身份存储在身份文件中时,filesystem-realm 对明文密码、散列密码和属性使用 Base64 编码。为提高安全性,您可以使用存储在凭证存储中的 secret 密钥来加密明文密码、散列密码和属性。secret 密钥用于加密和解密密码和属性。
完整性检查
要确保使用 filesystem-realm 创建的身份不会被篡改,您可以通过在创建过程中引用 filesystem-realm 中的密钥对来启用对 filesystem-realm 的完整性检查。
完整性检查在 filesystem-realm 中可以正常工作,如下所示:
-
当您在启用了完整性检查的
filesystem-realm中创建身份时,Elytron 会创建身份文件,并为其生成签名。 - 每当读取身份文件时,例如,当为身份验证更新身份或加载身份时,Elytron 会针对签名验证身份文件内容,以确保文件自上次授权写以来没有被篡改。
当您更新具有关联签名的现有身份时,Elytron 会更新内容并在原始内容通过验证后生成新的签名。
如果验证失败,您会收到以下失败信息:
{ "outcome" => "failed", "failure-description" => "WFLYCTL0158: Operation handler failed:java.lang.RuntimeException: WFLYELY01008: Failed to obtain the authorization identity.", "rolled-back" => true }{ "outcome" => "failed", "failure-description" => "WFLYCTL0158: Operation handler failed:java.lang.RuntimeException: WFLYELY01008: Failed to obtain the authorization identity.", "rolled-back" => true }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.2. 在 Elytron 中创建一个 filesystem-realm 复制链接链接已复制到粘贴板!
创建一个 filesystem-realm 和一个引用域的安全域,来保护 JBoss EAP 服务器界面或服务器上部署的应用程序。
先决条件
- JBoss EAP 正在运行。
流程
在 Elytron 中创建一个
filesystem-realm。语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add(path=<file_path>)
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add(path=<file_path>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add(path=fs-realm-users,relative-to=jboss.server.config.dir) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add(path=fs-realm-users,relative-to=jboss.server.config.dir) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将用户添加到域,并配置用户的角色。
添加用户。
语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity(identity=<user_name>)
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity(identity=<user_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity(identity=user1) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity(identity=user1) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置用户的密码。
语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:set-password(identity=<user_name>, clear={password=<password>})/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:set-password(identity=<user_name>, clear={password=<password>})Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:set-password(identity=user1, clear={password="passwordUser1"}) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:set-password(identity=user1, clear={password="passwordUser1"}) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为用户设置角色。
语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity-attribute(identity=<user_name>, name=<roles_attribute_name>, value=[<role_1>,<role_N>])
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity-attribute(identity=<user_name>, name=<roles_attribute_name>, value=[<role_1>,<role_N>])Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity-attribute(identity=user1, name=Roles, value=["Admin","Guest"]) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity-attribute(identity=user1, name=Roles, value=["Admin","Guest"]) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个引用
filesystem-realm的安全域。语法
/subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<filesystem_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=<filesystem_realm_name>,role-decoder="<role_decoder_name>"}])/subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<filesystem_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=<filesystem_realm_name>,role-decoder="<role_decoder_name>"}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}]) {"outcome" => "success"}/subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}]) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证 Elytron 是否可以从
filesystem-realm加载身份,请使用以下命令:语法
/subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)
/subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以使用创建的安全域来向管理界面和应用程序添加身份验证和授权。如需更多信息,请参阅 保护管理界面和应用程序。
1.1.3. 在 Elytron 中创建一个加密的 filesystem-realm 复制链接链接已复制到粘贴板!
创建一个加密的 filesystem-realm 来保护 JBoss EAP 应用程序或服务器接口,并确保用户凭据已加密,因此是安全的。
1.1.3.1. 为独立服务器创建一个 secret-key-credential-store 复制链接链接已复制到粘贴板!
使用管理 CLI 创建一个 secret-key-credential-store。当您创建 secret-key-credential-store 时,JBoss EAP 默认会生成一个 secret 密钥。生成的密钥的名称是 key,其大小为 256 位。
先决条件
- JBoss EAP 正在运行。
-
您为在其下运行 JBoss EAP 的用户帐户至少提供了对包含
secret-key-credential-store的目录的读/写权限。
流程
使用以下命令,使用管理 CLI 来创建一个
secret-key-credential-store:语法
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:add(path="<path_to_the_credential_store>", relative-to=<path_to_store_file>)
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:add(path="<path_to_the_credential_store>", relative-to=<path_to_store_file>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:add(path=examplePropertiesCredentialStore.cs, relative-to=jboss.server.config.dir) {"outcome" => "success"}/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:add(path=examplePropertiesCredentialStore.cs, relative-to=jboss.server.config.dir) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.3.2. 创建一个加密的 filesystem-realm 复制链接链接已复制到粘贴板!
创建一个加密的 filesystem-realm 和一个引用域的安全域,来保护 JBoss EAP 服务器接口或部署在服务器上的应用程序。
先决条件
- JBoss EAP 正在运行。
您已创建了一个
secret-key-credential-store。如需更多信息,请参阅 为独立服务器创建一个
secret-key-credential-store。
流程
在 Elytron 中创建一个加密的
filesystem-realm。语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add(path=<file_path>,credential-store=<name_of_credential_store>,secret-key=<key>)
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add(path=<file_path>,credential-store=<name_of_credential_store>,secret-key=<key>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add(path=fs-realm-users,relative-to=jboss.server.config.dir, credential-store=examplePropertiesCredentialStore, secret-key=key) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add(path=fs-realm-users,relative-to=jboss.server.config.dir, credential-store=examplePropertiesCredentialStore, secret-key=key) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将用户添加到域,并配置用户的角色。
添加用户。
语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity(identity=<user_name>)
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity(identity=<user_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity(identity=user1) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity(identity=user1) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置用户的密码。
语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:set-password(identity=<user_name>, clear={password=<password>})/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:set-password(identity=<user_name>, clear={password=<password>})Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:set-password(identity=user1, clear={password="passwordUser1"}) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:set-password(identity=user1, clear={password="passwordUser1"}) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为用户设置角色。
语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity-attribute(identity=<user_name>, name=<roles_attribute_name>, value=[<role_1>,<role_N>])
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity-attribute(identity=<user_name>, name=<roles_attribute_name>, value=[<role_1>,<role_N>])Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity-attribute(identity=user1, name=Roles, value=["Admin","Guest"]) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity-attribute(identity=user1, name=Roles, value=["Admin","Guest"]) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个引用
filesystem-realm的安全域。语法
/subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<filesystem_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=<filesystem_realm_name>,role-decoder="<role_decoder_name>"}])/subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<filesystem_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=<filesystem_realm_name>,role-decoder="<role_decoder_name>"}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}]) {"outcome" => "success"}/subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}]) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证 Elytron 是否可以从加密的
filesystem-realm加载身份,请使用以下命令:语法
/subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)
/subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以使用创建的安全域来向管理界面和应用程序添加身份验证和授权。
1.1.4. 在 Elytron 中创建一个支持完整性的 filesystem-realm 复制链接链接已复制到粘贴板!
创建一个支持完整性的 filesystem-realm 来保护 JBoss EAP 应用或服务器接口,并确保用户凭据未被篡改。
1.1.4.1. 使用管理 CLI 创建密钥对 复制链接链接已复制到粘贴板!
在 Elytron 中使用密钥对创建密钥存储。
先决条件
- JBoss EAP 正在运行。
流程
创建密钥存储。
语法
/subsystem=elytron/key-store=<key_store_name>:add(path=<path_to_key_store_file>,credential-reference={<password>})/subsystem=elytron/key-store=<key_store_name>:add(path=<path_to_key_store_file>,credential-reference={<password>})Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/key-store=exampleKeystore:add(path=keystore, relative-to=jboss.server.config.dir, type=JKS, credential-reference={clear-text=secret}) {"outcome" => "success"}/subsystem=elytron/key-store=exampleKeystore:add(path=keystore, relative-to=jboss.server.config.dir, type=JKS, credential-reference={clear-text=secret}) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在密钥对存储中创建密钥对。
语法
/subsystem=elytron/key-store=<key_store_name>:generate-key-pair(alias=<alias>,algorithm=<key_algorithm>,key-size=<size_of_key>,validity=<validity_in_days>,distinguished-name="<distinguished_name>")
/subsystem=elytron/key-store=<key_store_name>:generate-key-pair(alias=<alias>,algorithm=<key_algorithm>,key-size=<size_of_key>,validity=<validity_in_days>,distinguished-name="<distinguished_name>")Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/key-store=exampleKeystore:generate-key-pair(alias=localhost,algorithm=RSA,key-size=1024,validity=365,distinguished-name="CN=localhost") {"outcome" => "success"}/subsystem=elytron/key-store=exampleKeystore:generate-key-pair(alias=localhost,algorithm=RSA,key-size=1024,validity=365,distinguished-name="CN=localhost") {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将密钥对持久化到密钥存储文件。
语法
/subsystem=elytron/key-store=<key_store_name>:store()
/subsystem=elytron/key-store=<key_store_name>:store()Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/key-store=exampleKeystore:store() { "outcome" => "success", "result" => undefined }/subsystem=elytron/key-store=exampleKeystore:store() { "outcome" => "success", "result" => undefined }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.4.2. 创建支持完整性的 filesystem-realm 复制链接链接已复制到粘贴板!
创建一个支持完整性的 filesystem-realm,以及一个引用域的安全域,来保护 JBoss EAP 服务器接口或服务器上部署的应用程序。
先决条件
- JBoss EAP 正在运行。
您已创建了一个
secret-key-credential-store。如需更多信息 ,请参阅使用管理 CLI 创建密钥对。
流程
在 Elytron 中创建
filesystem-realm。语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add(path=<file_path>,key-store=<key_store_name>,key-store-alias=<key_store_alias>)
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add(path=<file_path>,key-store=<key_store_name>,key-store-alias=<key_store_alias>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add(path=fs-realm-users,relative-to=jboss.server.config.dir, key-store=exampleKeystore, key-store-alias=localhost) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add(path=fs-realm-users,relative-to=jboss.server.config.dir, key-store=exampleKeystore, key-store-alias=localhost) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将用户添加到域,并配置用户的角色。
添加用户。
语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity(identity=<user_name>)
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity(identity=<user_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity(identity=user1) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity(identity=user1) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置用户的密码。
语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:set-password(identity=<user_name>, clear={password=<password>})/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:set-password(identity=<user_name>, clear={password=<password>})Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:set-password(identity=user1, clear={password="passwordUser1"}) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:set-password(identity=user1, clear={password="passwordUser1"}) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为用户设置角色。
语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity-attribute(identity=<user_name>, name=<roles_attribute_name>, value=[<role_1>,<role_N>])
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity-attribute(identity=<user_name>, name=<roles_attribute_name>, value=[<role_1>,<role_N>])Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity-attribute(identity=user1, name=Roles, value=["Admin","Guest"]) {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity-attribute(identity=user1, name=Roles, value=["Admin","Guest"]) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个引用
filesystem-realm的安全域。语法
/subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<filesystem_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=<filesystem_realm_name>,role-decoder="<role_decoder_name>"}])/subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<filesystem_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=<filesystem_realm_name>,role-decoder="<role_decoder_name>"}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}]) {"outcome" => "success"}/subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}]) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证 Elytron 是否可以从
filesystem-realm加载身份,请使用以下命令:语法
/subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)
/subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以使用创建的安全域来向管理界面和应用程序添加身份验证和授权。如需更多信息,请参阅 保护管理界面和应用程序。
1.1.4.3. 在启用了支持完整性的现有 filesystem-realm 中更新密钥对 复制链接链接已复制到粘贴板!
当现有密钥被泄露的时,您可以更新在启用了支持完整性的 filesystem-realm 中引用的密钥对。另外,轮转密钥是一个好的做法。
先决条件
- 您已生成了一个密钥对。
您已创建了一个启用了完整性检查的
filesystem-realm。如需更多信息,请参阅 创建一个支持完整性的
filesystem-realm。
流程
在现有密钥存储中创建密钥对。
语法
/subsystem=elytron/key-store=<key_store_name>:generate-key-pair(alias=<alias>,algorithm=<key_algorithm>,key-size=<size_of_key>,validity=<validity_in_days>,distinguished-name="<distinguished_name>")
/subsystem=elytron/key-store=<key_store_name>:generate-key-pair(alias=<alias>,algorithm=<key_algorithm>,key-size=<size_of_key>,validity=<validity_in_days>,distinguished-name="<distinguished_name>")Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/key-store=exampleKeystore:generate-key-pair(alias=localhost2,algorithm=RSA,key-size=1024,validity=365,distinguished-name="CN=localhost") {"outcome" => "success"}/subsystem=elytron/key-store=exampleKeystore:generate-key-pair(alias=localhost2,algorithm=RSA,key-size=1024,validity=365,distinguished-name="CN=localhost") {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将密钥对持久化到密钥存储文件。
语法
/subsystem=elytron/key-store=<key_store_name>:store()
/subsystem=elytron/key-store=<key_store_name>:store()Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/key-store=exampleKeystore:store() { "outcome" => "success", "result" => undefined }/subsystem=elytron/key-store=exampleKeystore:store() { "outcome" => "success", "result" => undefined }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新密钥存储别名以引用新密钥对。
语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:write-attribute(name=key-store-alias, value=<key_store_alias>)
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:write-attribute(name=key-store-alias, value=<key_store_alias>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载服务器。
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用新密钥对,用新签名更新
filesystem-realm中的文件。语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:update-key-pair()
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:update-key-pair()Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/filesystem-realm=exampleSecurityRealm:update-key-pair() {"outcome" => "success"}/subsystem=elytron/filesystem-realm=exampleSecurityRealm:update-key-pair() {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用以下管理 CLI 命令验证
filesystem-realm中引用的密钥对是否已被更新:语法
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:read-resource()
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:read-resource()Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
filesystem-realm 中引用的密钥对已被更新。
1.1.5. 加密一个未加密的 filesystem-realm 复制链接链接已复制到粘贴板!
如果您在 Elytron 中配置了一个 filesystem-realm,您可以使用 WildFly Elytron 工具对其添加加密。
1.1.5.1. 为独立服务器创建一个 secret-key-credential-store 复制链接链接已复制到粘贴板!
使用管理 CLI 创建一个 secret-key-credential-store。当您创建 secret-key-credential-store 时,JBoss EAP 默认会生成一个 secret 密钥。生成的密钥的名称是 key,其大小为 256 位。
先决条件
- JBoss EAP 正在运行。
-
您为在其下运行 JBoss EAP 的用户帐户至少提供了对包含
secret-key-credential-store的目录的读/写权限。
流程
使用以下命令,使用管理 CLI 来创建一个
secret-key-credential-store:语法
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:add(path="<path_to_the_credential_store>", relative-to=<path_to_store_file>)
/subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:add(path="<path_to_the_credential_store>", relative-to=<path_to_store_file>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:add(path=examplePropertiesCredentialStore.cs, relative-to=jboss.server.config.dir) {"outcome" => "success"}/subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:add(path=examplePropertiesCredentialStore.cs, relative-to=jboss.server.config.dir) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.5.2. 将未加密的 filesystem-realm 转换为加密的 filesystem-realm 复制链接链接已复制到粘贴板!
您可以使用 WildFly Elytron 工具 filesystem-realm - encrypt 命令将未加密的 filesystem-realm 转换为加密的。
先决条件
您有一个现有的
filesystem-realm。如需更多信息,请参阅 在 Elytron 中创建一个
filesystem-realm。您已创建了一个
secret-key-credential-store。如需更多信息,请参阅 为独立服务器创建一个
secret-key-credential-store。- JBoss EAP 正在运行。
流程
将未加密的
filesystem-realm转换为加密的。语法
JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-encrypt --input-location <existing_filesystem_realm_name> --output-location JBOSS_HOME/standalone/configuration/<target_filesystem_realm_name> --credential-store <path_to_credential_store>/<credential_store>
$ JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-encrypt --input-location <existing_filesystem_realm_name> --output-location JBOSS_HOME/standalone/configuration/<target_filesystem_realm_name> --credential-store <path_to_credential_store>/<credential_store>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-encrypt --input-location JBOSS_HOME/standalone/configuration/fs-realm-users --output-location JBOSS_HOME/standalone/configuration/fs-realm-users-enc --credential-store JBOSS_HOME/standalone/configuration/examplePropertiesCredentialStore.cs Creating encrypted realm for: JBOSS_HOME/standalone/configuration/fs-realm-users Found credential store and alias, using pre-existing key
$ JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-encrypt --input-location JBOSS_HOME/standalone/configuration/fs-realm-users --output-location JBOSS_HOME/standalone/configuration/fs-realm-users-enc --credential-store JBOSS_HOME/standalone/configuration/examplePropertiesCredentialStore.cs Creating encrypted realm for: JBOSS_HOME/standalone/configuration/fs-realm-users Found credential store and alias, using pre-existing keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow WildFly Elytron 命令
filesystem-realm-encrypt创建一个使用--output-location参数指定的filesystem-realm。它还会在filesystem-realm的根目录处创建一个 CLI 脚本,您可以使用它来在elytron子系统中添加filesystem-realm资源。提示使用
--summary选项查看命令执行的摘要。使用生成的 CLI 脚本,在
elytron子系统中添加filesystem-realm资源。语法
JBOSS_HOME/bin/jboss-cli.sh --connect --file=<target_filesystem_realm_directory>/<target_filesystem_realm_name>.cli
$ JBOSS_HOME/bin/jboss-cli.sh --connect --file=<target_filesystem_realm_directory>/<target_filesystem_realm_name>.cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
JBOSS_HOME/bin/jboss-cli.sh --connect --file=JBOSS_HOME/standalone/configuration/fs-realm-users-enc/encrypted-filesystem-realm.cli
$ JBOSS_HOME/bin/jboss-cli.sh --connect --file=JBOSS_HOME/standalone/configuration/fs-realm-users-enc/encrypted-filesystem-realm.cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以使用加密的 filesystem-realm 创建一个引用域的安全域,来保护 JBoss EAP 服务器接口或部署在服务器上的应用程序。
1.1.6. 在现有 filesystem-realm中添加完整性支持 复制链接链接已复制到粘贴板!
如果您在 Elytron 中配置了 filesystem-realm,您可以使用 WildFly Elytron 工具使用密钥对签名,以启用完整性检查。
1.1.6.1. 使用管理 CLI 创建密钥对 复制链接链接已复制到粘贴板!
在 Elytron 中使用密钥对创建密钥存储。
先决条件
- JBoss EAP 正在运行。
流程
创建密钥存储。
语法
/subsystem=elytron/key-store=<key_store_name>:add(path=<path_to_key_store_file>,credential-reference={<password>})/subsystem=elytron/key-store=<key_store_name>:add(path=<path_to_key_store_file>,credential-reference={<password>})Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/key-store=exampleKeystore:add(path=keystore, relative-to=jboss.server.config.dir, type=JKS, credential-reference={clear-text=secret}) {"outcome" => "success"}/subsystem=elytron/key-store=exampleKeystore:add(path=keystore, relative-to=jboss.server.config.dir, type=JKS, credential-reference={clear-text=secret}) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在密钥对存储中创建密钥对。
语法
/subsystem=elytron/key-store=<key_store_name>:generate-key-pair(alias=<alias>,algorithm=<key_algorithm>,key-size=<size_of_key>,validity=<validity_in_days>,distinguished-name="<distinguished_name>")
/subsystem=elytron/key-store=<key_store_name>:generate-key-pair(alias=<alias>,algorithm=<key_algorithm>,key-size=<size_of_key>,validity=<validity_in_days>,distinguished-name="<distinguished_name>")Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/key-store=exampleKeystore:generate-key-pair(alias=localhost,algorithm=RSA,key-size=1024,validity=365,distinguished-name="CN=localhost") {"outcome" => "success"}/subsystem=elytron/key-store=exampleKeystore:generate-key-pair(alias=localhost,algorithm=RSA,key-size=1024,validity=365,distinguished-name="CN=localhost") {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将密钥对持久化到密钥存储文件。
语法
/subsystem=elytron/key-store=<key_store_name>:store()
/subsystem=elytron/key-store=<key_store_name>:store()Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/key-store=exampleKeystore:store() { "outcome" => "success", "result" => undefined }/subsystem=elytron/key-store=exampleKeystore:store() { "outcome" => "success", "result" => undefined }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.6.2. 为 filesystem-realm启用完整性检查 复制链接链接已复制到粘贴板!
您可以使用 WildFly Elytron 工具 命令从现有的非空 filesystem-realm -integrityfilesystem-realm -realm 创建一个带有完整性检查的 filesystem-realm。
您可以将 filesystem-realm-integrity 命令用于以下用例:
-
从现有
filesystem-realm创建一个带有完整性检查的新filesystem-realm。 -
向现有的
filesystem-realm添加完整性检查。
先决条件
您有一个现有的
filesystem-realm。如需更多信息,请参阅 在 Elytron 中创建一个
filesystem-realm。您已生成了一个密钥对。
如需更多信息 ,请参阅使用管理 CLI 创建密钥对。
- JBoss EAP 正在运行。
流程
使用现有的
filesystem-realm并使用密钥对签名具有完整性的filesystem-realm。要为现有
filesystem-realm添加完整性支持,请使用以下命令省略--output-location和--realm-name选项。如果您指定了--output-location和--realm-name选项,命令会创建一个带有完整性检查的新filesystem-realm,而无需更新现有检查。语法
JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-integrity --input-location <path_to_existing_filesystem_realm> --keystore <path_to_key_store_file> --password <keystore_password> --key-pair <key_pair_alias> --output-location <path_for_new_filesystem_realm> --realm-name <name_of_new_filesystem_realm>
$ JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-integrity --input-location <path_to_existing_filesystem_realm> --keystore <path_to_key_store_file> --password <keystore_password> --key-pair <key_pair_alias> --output-location <path_for_new_filesystem_realm> --realm-name <name_of_new_filesystem_realm>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-integrity --input-location JBOSS_HOME/standalone/configuration/fs-realm-users/ --keystore JBOSS_HOME/standalone/configuration/keystore --password secret --key-pair localhost --output-location JBOSS_HOME/standalone/configuration/fs-realm-users --realm-name exampleRealmWithIntegrity
$ JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-integrity --input-location JBOSS_HOME/standalone/configuration/fs-realm-users/ --keystore JBOSS_HOME/standalone/configuration/keystore --password secret --key-pair localhost --output-location JBOSS_HOME/standalone/configuration/fs-realm-users --realm-name exampleRealmWithIntegrityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例输出
Creating filesystem realm with integrity verification for: JBOSS_HOME/standalone/configuration/fs-realm-users
Creating filesystem realm with integrity verification for: JBOSS_HOME/standalone/configuration/fs-realm-usersCopy to Clipboard Copied! Toggle word wrap Toggle overflow WildFly Elytron 命令
filesystem-realm-integrity创建一个使用--output-location参数指定的filesystem-realm。它还会在filesystem-realm的根目录处创建一个 CLI 脚本,您可以使用它来在elytron子系统中添加filesystem-realm资源。提示使用
--summary选项查看命令执行的摘要。使用生成的 CLI 脚本,在
elytron子系统中添加filesystem-realm资源。语法
JBOSS_HOME/bin/jboss-cli.sh --connect --file=<target_filesystem_realm_directory>/<target_filesystem_realm_name>.cli
$ JBOSS_HOME/bin/jboss-cli.sh --connect --file=<target_filesystem_realm_directory>/<target_filesystem_realm_name>.cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
JBOSS_HOME/bin/jboss-cli.sh --connect --file=JBOSS_HOME/standalone/configuration/fs-realm-users/exampleRealmWithIntegrity.cli
$ JBOSS_HOME/bin/jboss-cli.sh --connect --file=JBOSS_HOME/standalone/configuration/fs-realm-users/exampleRealmWithIntegrity.cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以使用 filesystem-realm 创建一个引用域的安全域,来保护 JBoss EAP 服务器接口或服务器上部署的应用程序。