# Principal, Authentication, Security und alles im JBoss 7



## Sym (12. Sep 2011)

Hallo,

ich versuche gerade die verschiedenen Möglichkeiten zusammeln.

Kennt ihr gute Tutorials oder Bücher, die sich mit aktueller Technology in diesem Bereich beschäftigen?

Danke und Gruß


----------



## TheDarkRose (12. Sep 2011)

Aha, hast du schon mal selbst gegoogelt oder einfach mal mit kleinen Dummyprojekten ausbrobiert?

Bücher gibt es da kaum. Schau selbst in die JBoss, JBossXS Dokumentationen oder benutze die Forensuche.


----------



## Sym (13. Sep 2011)

Ja, die Suchen habe ich bemüht, sonst hätte ich hier nicht gefragt.


----------



## FArt (13. Sep 2011)

Nun, das ist JAAS, ...


----------



## Sym (15. Sep 2011)

Nun habe ich doch eine speziellere Frage. 

Ich habe folgende Struktur:


```
my-app.ear
        |+ src
           |+ main
              |+ application
                 |+ jboss-app.xml
        |+ myapp.war
        |+ myapp.jar
        |+ lib
```

jboss-app.xml

```
<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE jboss-app
    PUBLIC "-//JBoss//DTD J2EE Application 4.2//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd">

<jboss-app>
	<security-domain>test</security-domain>
</jboss-app>
```

Ich denke, damit sollte doch das Wenigste erledigt sein, oder? Allerdings zeigt mein JBoss 7 folgendes:

```
WARN  [org.jboss.as] No security realm defined for native management service, all access will be unrestricted.
```

Demzufolge wird in der EJB das @RolesAllowed(value = "ADMIN") auch ignoriert.

Hat jemand einen Tip?


----------



## ARadauer (15. Sep 2011)

Spring Security?


----------



## Sym (15. Sep 2011)

Ich wollte eigentlich Jaas verwenden, und versuche mich gerade an Chapter*10.*JBoss Login Modules.

Reicht das mein obiger Code denn nicht, um EJBs-Methoden zu sichern? Die Authentifizierung fehlt dann zwar noch, aber was kommt, das kommt.


----------



## TheDarkRose (15. Sep 2011)

Hast du die Security Domain im Jboss Server auch richtig eingerichtet? Poste mal den relevanten ausschnitt.


----------



## Sym (15. Sep 2011)

TheDarkRose hat gesagt.:


> Hast du die Security Domain im Jboss Server auch richtig eingerichtet? Poste mal den relevanten ausschnitt.


Ich dachte, das schaffe ich alleine durch die jboss-app.xml?


----------



## TheDarkRose (15. Sep 2011)

Dort gibst du an, welche Security Domain deine Anwendung verwendet. Aber einfach so weiß der JBoss natürlich nicht was test sein soll. Du musst ihm schon auch noch die Security Domain konfigurieren, und somit bestimmen woher die User und Rollendaten bezogen werden.


----------



## Sym (15. Sep 2011)

Ah ok,

ich habe mich in diesem Bereich leider noch nie bewegt. 

Dann schaue ich mal, wie ich dem JBoss das am besten beibringe.

Muss ich das direkt im JBoss definieren? Oder gibt es auch eine Möglichkeit über Maven eine solche Konfiguration zur Verfügung zu stellen?

Gruß und Dank.


----------



## Sym (15. Sep 2011)

Danke nochmal,

ich denke, ich werde versuchen, die Konfiguration mit einem SAR zu setzen. Bei Problemen melde ich mich.


----------



## TheDarkRose (15. Sep 2011)

SAR? Wtf?

Normal liegt unter $server/conf/ eine login-config,xml in der die Security Domain definiert wird.

CreateASimpleSecurityDomainForJBossSX | JBoss Community


----------



## Sym (16. Sep 2011)

TheDarkRose hat gesagt.:


> SAR? Wtf?
> 
> Normal liegt unter $server/conf/ eine login-config,xml in der die Security Domain definiert wird.
> 
> CreateASimpleSecurityDomainForJBossSX | JBoss Community


Die Idee war, dass ich somit in dem Project alle Möglichkeiten zur Entwicklung vorliegen habe und bei einem Aufsetzen eines weiteren Entwicklungsarbeiteplatzes nur einen JBoss installieren muss und der Rest über das EAR-Plugin erledigt wird. 

Aber anscheinend wird beim JBoss 7 alles in der Standalone.xml geregelt und die Möglichkeit über die jboss-service.xml ist eh nicht mehr gegeben.


----------



## Sym (16. Sep 2011)

So, da bin ich wieder. Ich bekomme leider immer noch die folgende Meldung:


```
WARN  [org.jboss.as] No security realm defined for native management service, all access will be unrestricted.
```

Und meine RolesAllowed-Annotation in der EJB wird auch ignoriert.

Hier meine JBoss 7 Einstellungen

standalone.xml:

```
<management>
    <security-realms>
        <security-realm name="test">
            <authentication>
                <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
            </authentication>
        </security-realm>
    </security-realms>
    ...
</management>
...
<subsystem xmlns="urn:jboss:domain:security:1.0">
            <security-domains>
                <security-domain name="other" cache-type="default">
                    <authentication>
                        <login-module code="Database" flag="required">
                            <module-option name="dsJndiName" value="java:/test"/>
                            <module-option name="principalsQuery" value="SELECT password FROM users WHERE username=?"/>
                            <module-option name="rolesQuery" value="SELECT USERROLE.rolename, 'Roles' FROM USERS INNER JOIN (USERROLE INNER JOIN MAPUSERUSERROLE ON USERROLE.roleid = MAPUSERUSERROLE.roleid) ON USERS.userid = MAPUSERUSERROLE.userid where USERS.username=?"/>
                        </login-module>
                    </authentication>
                </security-domain>
            </security-domains>
        </subsystem>
```

Der Authentication-Block im Managementbereich ist dabei noch nicht korrekt, denke ich. Wie bekomme ich die Verbindung zur Security-Domain?

jboss-app.xml

```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-app PUBLIC
	"-//JBoss//DTD J2EE Application 1.4//EN"
	"http://www.jboss.org/j2ee/dtd/jboss-app_4_0.dtd">
<jboss-app>
  <security-domain>java:/jaas/other</security-domain>
</jboss-app>
```

web.xml

```
<login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>test</realm-name>
    </login-config>
```

Dank und Gruß


----------



## Sym (16. Sep 2011)

Die Warnung bekomme ich mit


```
<management-interfaces>
            <native-interface interface="management" port="9999" security-realm="test"/>
            <http-interface interface="management" port="9990" security-realm="test"/>
        </management-interfaces>
```
weg, aber helfen tut das nicht.

Wo könnte das Problem liegen?


----------



## maki (19. Sep 2011)

Hier gehts weiter:
http://www.java-forum.org/allgemein...uthentifizierung-no-principals-available.html

*geschlossen*


----------

