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.
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>
<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.
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.