首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WildFly和Java的Elytron安全配置

WildFly和Java的Elytron安全配置
EN

Stack Overflow用户
提问于 2019-03-22 10:59:40
回答 1查看 1.5K关注 0票数 1

我试图对WildFly安全配置更加熟悉,并且在理解服务器端选项(如standalone.xml )和应用程序端信任(如web.xmljboss-web.xml )之间的关系方面存在一些问题。

关于这个配置,我有几个问题,这是基于Wildfly安全示例的。我已经试过了,但是有几件事情对我来说并不清楚。

  1. 我如何看待身份验证的基本类型是在服务器端的身份验证工厂中和应用程序端的web.xml中定义的。哪个优先考虑。必须申报两次吗。
  2. 领域'RealmUsersRoles‘的名称。是否意味着服务器端信任和web.xml中的相同实体?
  3. 在理想的情况下,我想得到关于这个配置中提到的所有安全实体之间的互连的解释。

下面是JBoss CLI配置脚本

代码语言:javascript
复制
# 1. Add the JDBC security realm creation
/subsystem=elytron/jdbc-realm=servlet-security-jdbc-realm:add(\
principal-query=[\
{sql="SELECT PASSWORD FROM USERS WHERE USERNAME = ?", data-source="MySQLDS", clear-password-mapper={password-index=1}},\
{sql="SELECT R.NAME, 'Roles' FROM USERS_ROLES UR INNER JOIN ROLES R ON R.ID = UR.ROLE_ID INNER JOIN USERS U ON U.ID = UR.USER_ID WHERE U.USERNAME = ?", data-source="MySQLDS", attribute-mapping=[{index=1, to=roles}]}])

# 2. Add a simple role decoder for the "roles" attribute mapping
/subsystem=elytron/simple-role-decoder=from-roles-attribute:add(attribute=roles)

# 3. Configure the servlet-security-quickstart security domain
/subsystem=elytron/security-domain=servlet-security-quickstart-sd:add(\
default-realm=servlet-security-jdbc-realm, \
realms=[{realm=servlet-security-jdbc-realm, role-decoder=from-roles-attribute}], \
permission-mapper=default-permission-mapper)

# 4. Configure the HTTP Authentication Factory
/subsystem=elytron/http-authentication-factory=servlet-security-quickstart-http-auth:add(\
http-server-mechanism-factory=global,\
security-domain=servlet-security-quickstart-sd,\
mechanism-configurations=[{mechanism-name=BASIC,mechanism-realm-configurations=[{realm-name=RealmUsersRoles}]}])

# 5. Configure Undertow's application security domain
/subsystem=undertow/application-security-domain=servlet-security-quickstart:add(\
http-authentication-factory=servlet-security-quickstart-http-auth)

web.xml

代码语言:javascript
复制
<?xml version="1.0"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>RealmUsersRoles</realm-name>
    </login-config>
</web-app>

jboss-web.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <security-domain>servlet-security-quickstart</security-domain>
</jboss-web>

下面是一个指向Wildfly示例的链接,我使用它作为基本https://github.com/wildfly/quickstart/tree/master/servlet-security

下面是基于这个示例的所有代码,并对https://github.com/usharik/GeekBrainsJavaEE/tree/master/lesson8-security做了一些修改

EN

回答 1

Stack Overflow用户

发布于 2019-04-03 20:27:44

  1. 您需要在服务器配置中配置基本类型的身份验证,但不需要在web.xml中配置。
  2. 领域的名称并不重要。当您得到401 Unauthorized ( WWW-Authenticate头)时,它就会显示在浏览器中。如果在web.xml中配置了ream名称,则使用服务器配置中的ream名称。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55298178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档