Keycloak eckige Keine "Access-Control-Allow-Origin' - header vorhanden ist
Habe ich integriert keycloak mit einer angular-app. Im Grunde, sowohl frontend und backend auf unterschiedlichen server.Backend-app läuft auf apache tomcat 8. Frontend-app läuft auf JBoss willkommen im content-Ordner.
Winkel-config
angular.element(document).ready(function ($http) {
var keycloakAuth = new Keycloak('keycloak.json');
auth.loggedIn = false;
keycloakAuth.init({ onLoad: 'login-required' }).success(function () {
keycloakAuth.loadUserInfo().success(function (userInfo) {
console.log(userInfo);
});
auth.loggedIn = true;
auth.authz = keycloakAuth;
auth.logoutUrl = keycloakAuth.authServerUrl + "/realms/app1/protocol/openid-connect/logout?redirect_uri=http://35.154.214.8/hrms-keycloak/index.html";
module.factory('Auth', function() {
return auth;
});
angular.bootstrap(document, ["themesApp"]);
}).error(function () {
window.location.reload();
});
});
module.factory('authInterceptor', function($q, Auth) {
return {
request: function (config) {
var deferred = $q.defer();
if (Auth.authz.token) {
Auth.authz.updateToken(5).success(function() {
config.headers = config.headers || {};
config.headers.Authorization = 'Bearer ' + Auth.authz.token;
deferred.resolve(config);
}).error(function() {
deferred.reject('Failed to refresh token');
});
}
return deferred.promise;
}
};
});
module.config(["$httpProvider", function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptor');
}]);
- Request-Header
Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:authorization
Access-Control-Request-Method:GET
Connection:keep-alive
Host:35.154.214.8:8080
Origin:http://35.154.214.8
Referer:http://35.154.214.8/accounts-keycloak/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
Fehler auf der web-Konsole.
XMLHttpRequest cannot load http://35.154.214.8:8080/company/loadCurrencyList. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://35.154.214.8' is therefore not allowed access.
Cors filter für backend -
@Component
public class CORSFilter implements Filter {
static Logger logger = LoggerFactory.getLogger(CORSFilter.class);
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "*");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "*");
chain.doFilter(request, response);
}
public void destroy() {
}
}
Hast du enable CORS auf dem server mit dem backend?
Ja. check nochmal die Frage. Frage aktualisiert. es scheint token ist nicht vorbei.
Haben Sie das problem gelöst?
Ja. check nochmal die Frage. Frage aktualisiert. es scheint token ist nicht vorbei.
Haben Sie das problem gelöst?
InformationsquelleAutor boycod3 | 2017-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kämpfte ich mit KeyCloak und CORS und all dies für etwa zwei Wochen, und das ist meine Lösung (für keycloak 3.2.1):
Its all about konfigurieren KeyCloak server.
Es scheint zu sein, dass WebOrigin Ihrer Reich werden muss
Nur ein origin "*".
Das ist alles, was nötig war für mich.
Wenn Sie geben Sie Ihre server-als WebOrigin, der ärger beginnt.
Wenn Sie anrufen, keycloak.init in JavaScript, keycloak nicht generieren CORS-Header, so müssen Sie diese manuell konfiguriert werden, und sobald Sie dies tun, und rufen keycloak.getUserInfo nach erfolgreicher init - bekommen Sie das doppelte CORS-Header, was nicht erlaubt ist.
Irgendwo tief im inneren von keycloak mailing-Listen ist angegeben, dass müssen Sie aktivieren,-cors=true in Ihrem keycloak.json, aber es gibt nichts darüber, dass auf keycloak.gitbooks.io. So scheint es nicht um wahr zu sein.
Sie auch gar nicht erwähnen, CORS bei der Beschreibung JavaScript und Node.Js Adapter, und ich weiß nicht warum, scheint nicht wichtig zu sein überhaupt.
Scheint es auch zu sein, dass Sie sollten nicht berühren WildFly-Konfiguration zu bieten, CORS-Header.
Außerdem CORS in OIDC ist eine spezielle KeyCloak Funktion (und kein bug).
Hoffentlich diese Antwort dient Sie gut.
enable-cors
beschrieben und erklärt auf der Keycloak in der Dokumentation der Java-Adapter-Sektion.Dies zu tun, in der Produktion ist schrecklich und geht gegen der Grund für die Verwendung keycloak in den ersten Platz (z.B. Sicherheit)
"aktivieren-cors wird beschrieben und erklärt auf der Keycloak in der Dokumentation der Java-Adapter Abschnitt" über 2 Jahre intermittierende Experimente bin ich immer noch nicht in der Lage, um zu bestimmen, mit Sicherheit, ob "enable-cors" tut überhaupt nichts. Eine Sache, die hat es definitiv noch nie gemacht, überall habe ich es versucht: aktivieren CORS-Header.
InformationsquelleAutor subrob sugrobych
Es ist wichtig zu beachten, dass die Einstellung Ihres web-origin "*" öffnet sich eine klaffende Sicherheitslücke. Es ermöglicht, ein Skript aus einer beliebigen Domäne Anfragen zu stellen, die im Auftrag eines Nutzers, innerhalb, die im browser des Nutzers.
Wenn Sie finden, sich selbst deaktivieren einer Sicherheitsfunktion in einer Art und Weise, wie diese, die Sie benötigen, zu prüfen, warum die Sicherheits-Funktion vorhanden ist.
Siehe Abschnitt 8.1.1 der Keycloak docs
InformationsquelleAutor GuyPaddock
Die Lösung, die für mich gearbeitet wurde die Einstellung der Web-Ursprung-URL (meines Mandanten, nicht das Reich) von zum Beispiel:
http://localhost:3000/
zuhttp://localhost:3000
(Beachten Sie das fehlen von/
am Ende). Auf diese Weise sind Sie nicht öffnen, um alle URLS durch Verwendung*
.InformationsquelleAutor Juan Espinosa
Gaben Sie die Antwort auf Ihre eigene Frage hinzufügen WebOrigin, wie * in der client-Ebene (NICHT auf Reich-Niveau!), die für Sie gearbeitet, aber in meinem Fall ist es nicht. Tatsächlich, das entfernen der * war der trick für mich, weil KC geschickt, die CORS-Header zweimal, es zu entfernen, machten ihn zu einer Zeit...
Dank für Ihre Antwort, habe ich zum Glück gefunden, die Antwort auf meine Probleme...
Was wir uns alle einig sind, ist die KC-Dokumentation ist zumindest sehr arm.
Es ist geschrieben für dummies, aber.... wir sind nicht die dummies, weder das Thema ist...
Es nicht zu erklären technische details. Zum Beispiel, was sind die Antworten von den Endpunkten. Suchen im Internet (zwei Wochen) nicht geben ein wenig - aber warum ist es nicht festgelegt, die in der Dokumentation?
Einem Beispiel. Aber ich habe mehrere...
Können wir helfen, mit der Dokumentation?
völlig einverstanden mit @SébastienBlanc, beschweren sich über etwas, das macht es nicht besser.
InformationsquelleAutor Dutchboy
Konfrontiert das gleiche problem, die Arbeit mit Winkel-6, Spring Boot für REST Web Services und Keycloak.
Keycloak Adresse: KEYCLOAK
Winkel-6-App-Adresse: ANGULAR_APP
Zwei REST-WS sicherte sich mit Keycloak und Frühjahr Autokonfiguration: AA, BB
Flow war: Eckig App-Anfrage(GET), AA, AA-Anfrage(GET) BB
Mithilfe von XMLHttpRequest Fehler war so etwas wie:
Kann nicht geladen AA. Antwort auf preflight-Anfrage nicht passieren access control check: Kein "Access-Control-Allow-Origin' - header vorhanden ist, auf die angeforderte Ressource. Herkunft 'ANGULAR_APP' ist daher nicht der Zugriff erlaubt.
Mithilfe von Beobachtbaren Winkel-es war:
Fehler beim laden von AA: Redirect von 'BB' auf 'KEYCLOAK' wurde blockiert von CORS-Politik: Keine "Access-Control-Allow-Origin' - header vorhanden ist, auf die angeforderte Ressource. Herkunft 'ECKIG' ist daher nicht der Zugriff erlaubt.
Versucht mit web-Ursprung: * keine Lösung
Nie wusste, warum Keycloak Tat, die Umleitung, verursacht problem
Problem auf Magische Weise verschwunden, wenn ich umgeschaltet Sicherheit in service, AA-von Keycloak + Autoconfigure zu Keycloak + Frühling Sicherheit nach: https://developers.redhat.com/blog/2017/05/25/easily-secure-your-spring-boot-applications-with-keycloak/
Verloren viele Tage Schlaf, weil dieser. Gerade verlassen dieses in Fall, dass jemand die Gesichter etwas ähnliches.
InformationsquelleAutor Galo