2.2. 使用安全域对应用程序用户进行身份验证和授权
使用引用安全域的安全域来验证和授权应用用户。开发应用程序的流程仅作为示例提供。
2.2.1. 为 aggregate-realm 开发一个简单的 Web 应用程序 复制链接链接已复制到粘贴板!
您可以创建一个简单的 Web 应用来遵循配置安全域示例。
以下流程仅作为示例提供。如果您已有要保护的应用程序,则可以跳过这些步骤,直接来到 向应用程序添加身份验证和授权。
2.2.1.1. 为 web 应用程序开发创建一个 maven 项目 复制链接链接已复制到粘贴板!
要创建一个 web 应用,请创建一个具有所需依赖项和目录结构的 Maven 项目。
先决条件
- 您已安装了 Maven。如需更多信息,请参阅 下载 Apache Maven。
流程
使用
mvn命令建立一个 Maven 项目。该命令创建项目的目录结构以及pom.xml配置文件。语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入到应用程序根目录:
语法
cd <name-of-your-application>
$ cd <name-of-your-application>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cd simple-webapp-example
$ cd simple-webapp-exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将生成的
pom.xml文件的内容替换为以下文本:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在应用程序根目录中,输入以下命令:
mvn install
$ mvn installCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您会看到类似如下的输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以创建一个 web 应用程序。
2.2.1.2. 创建一个 Web 应用程序 复制链接链接已复制到粘贴板!
创建一个 Web 应用程序,其中包含一个 servlet,它将返回从登录的用户主体和属性中获取的用户名。如果没有登录的用户,servlet 将返回文本"NO AUTHENTICATED USER"。
先决条件
- 您已创建了一个 Maven 项目。
- JBoss EAP 正在运行。
流程
创建一个用于存储 Java 文件的目录。
语法
mkdir -p src/main/java/<path_based_on_artifactID>
$ mkdir -p src/main/java/<path_based_on_artifactID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
mkdir -p src/main/java/com/example/app
$ mkdir -p src/main/java/com/example/appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前往新目录。
语法
cd src/main/java/<path_based_on_artifactID>
$ cd src/main/java/<path_based_on_artifactID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cd src/main/java/com/example/app
$ cd src/main/java/com/example/appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建一个
securedServlet.java文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在应用程序根目录中,使用以下命令编译应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署应用。
mvn wildfly:deploy
$ mvn wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在浏览器中,导航到
http://localhost:8080/simple-webapp-example/secured。您会收到以下信息:
Secured Servlet Current Principal 'NO AUTHENTICATED USER'
Secured Servlet Current Principal 'NO AUTHENTICATED USER'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 因为没有添加验证机制,所以您可以访问应用程序。
现在,您可以使用安全域来保护这个应用程序,这样只有经过身份验证的用户才可以访问它。
2.2.2. 向应用程序添加身份验证和授权 复制链接链接已复制到粘贴板!
您可以使用安全域向 Web 应用程序添加身份验证和授权,以对其进行保护。要在添加身份验证和授权后访问 web 应用程序,用户必须输入登录凭证。
先决条件
- 您已创建了一个引用安全域的安全域。
- 您已在 JBoss EAP 上部署了应用程序。
- JBoss EAP 正在运行。
流程
在
undertow 子系统中配置一个application-security-domain:语法
/subsystem=undertow/application-security-domain=<application_security_domain_name>:add(security-domain=<security_domain_name>)
/subsystem=undertow/application-security-domain=<application_security_domain_name>:add(security-domain=<security_domain_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=undertow/application-security-domain=exampleApplicationSecurityDomain:add(security-domain=exampleSecurityDomain) {"outcome" => "success"}/subsystem=undertow/application-security-domain=exampleApplicationSecurityDomain:add(security-domain=exampleSecurityDomain) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置应用程序的
web.xml以保护应用程序资源。语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以使用不同的
auth-method。通过在应用程序中创建一个
jboss-web.xml文件,或者在undertow子系统中设置默认安全域,将应用程序配置为使用安全域。在应用程序的
WEB-INF目录中创建引用application-security-domain的jboss-web.xml文件。语法
<jboss-web> <security-domain> <!-- The security domain to associate with the application --></security-domain> </jboss-web>
<jboss-web> <security-domain> <!-- The security domain to associate with the application --></security-domain> </jboss-web>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
<jboss-web> <security-domain>exampleApplicationSecurityDomain</security-domain> </jboss-web>
<jboss-web> <security-domain>exampleApplicationSecurityDomain</security-domain> </jboss-web>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
undertow子系统中,为应用程序设置默认安全域。语法
/subsystem=undertow:write-attribute(name=default-security-domain,value=<application_security_domain_to_use>)
/subsystem=undertow:write-attribute(name=default-security-domain,value=<application_security_domain_to_use>)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
验证
在应用程序根目录中,使用以下命令编译应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署应用。
mvn wildfly:deploy
$ mvn wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在浏览器中,导航到
http://localhost:8080/simple-webapp-example/secured。您会收到一个登录提示,确认现在需要身份验证才能访问应用程序。
现在,您的应用程序已使用安全域进行了保护,用户可以在身份验证后登录。另外,只有具有指定角色的用户才可以访问应用程序。