wake-up-neo.com

Federsicherheit - Ermöglicht anonymen Zugriff

Ich habe Oauth2 in meiner Spring-Boot-App implementiert. In meiner security-context.xml habe ich diese Zeilen -

<sec:intercept-url pattern="/trusted/**" access="isAnonymous()" />
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />

Ich möchte, dass alles unter/trust ohne Authentifizierung verfügbar ist. Ich werde jedoch immer noch zur Authentifizierung aufgefordert, wenn ich versuche, auf vertrauenswürdige Ressourcen zuzugreifen (dies sind RESTful-Ressourcen).

Habe ich noch etwas verpasst?

[Bearbeiten:] Ich führe diese App mit einer "bereitgestellten" Tomcat-Instanz aus.

14
Raj

Sie müssen lediglich das Attribut access des vertrauenswürdigen Intercept-Ausdrucks ersetzen, und es sollte funktionieren:

<sec:intercept-url pattern="/trusted/**" filters="none" />
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />

Da Spring Security filters nicht mehr unterstützt wird, sollten Sie http-Tags verwenden, um denselben Effekt zu erzielen:

<http pattern="/trusted/**" security="none"/>

<http auto-config='true'>
  <intercept-url pattern="/**" access="isFullyAuthenticated()" />
  <form-login login-page='/login.jsp'/>
</http>

Sie können mehr darüber lesen .

5
Daniel Cottone
<http>
<intercept-url pattern="/trusted/**" access="ROLE_USER,ROLE_GUEST" />
<intercept-url pattern="/messagePost.htm*" access="ROLE_USER" />
<intercept-url pattern="/messageDelete.htm*" access="ROLE_ADMIN" />
<anonymous username="guest" granted-authority="ROLE_GUEST" />
<remember-me />
</http>

<anonymous username="guest" granted-authority="ROLE_GUEST" />

Sie können eine Rolle wie ROLE_GUEST definieren und wie der obige Code erwähnen. Jedes anonyme Mitglied kann auf das URL-Muster unter ROLE_GUEST zugreifen.

1
MS Ibrahim

Ihre Konfiguration ist falsch. Stellen Sie sich jetzt vor, was los ist, und Sie sagen Spring-Sicherheit, anonymen Zugriff auf alles unter /trusted/** zuzulassen, was in Ordnung ist. Dann fordern Sie es jedoch erneut auf, den gesamten anonymen Zugriff unter /** einzuschränken. Dies ist jeder Pfad in Ihrer Anwendung, der den Zugriff auf /trusted/** beschränkt. auch.

Sie müssen Ihre Konfiguration folgendermaßen ändern:

<sec:intercept-url pattern="/trusted/**" access="isAnonymous()" />
<sec:intercept-url pattern="/secure/**" access="isFullyAuthenticated()" />

und es wird funktionieren.

0