2017-07-10 1 views
0

Ich habe gerade angefangen zu verwenden oidc-client-js, so dass ich wirklich verwirrt bin zu versuchen, es zu verstehen. Ich habe die folgende Frage :).OpenID-Connect-Java-Spring-Server CORS Deaktiviert ERROR

Ich habe an einen Remote-Web-Server angeschlossen OpenIDConnect läuft und mit speziell https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Serverich habe die OpenID-connect-Server-Webapp builded und korrekt erstellt einen Client. Es ist auf einem vm gehostet.

enter image description here

  • folgte ich dieses Tutorial ->link

  • Verbindung von 3 HTML-Dateien i für das Tutorial geändert i gefolgt -> here

Der Fehler, wird auf der Konsole angezeigt:

enter image description here


Alle gut, wie man unten auf dem Bild sehen kann, autorisiert ich die einfache Javascript-App und ich bin immer die access_token zusammen mit id_token zurück, obwohl, wenn ich versuche, die API aufrufen, boom i Fehler bekommen und ich weiß nicht warum?

enter image description here


Der Code html Index i haben (falls es hilft Ihnen):

<!DOCTYPE html> 
<html> 
<head> 
    <title>JS Application</title> 
    <meta charset="utf-8" /> 
    <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.css" /> 
    <style> 
     .main-container { 
      padding-top: 70px; 
     } 

     pre:empty { 
      display: none; 
     } 
    </style> 
</head> 
<body> 
    <nav class="navbar navbar-inverse navbar-fixed-top"> 
     <div class="container"> 
      <div class="navbar-header"> 
       <a class="navbar-brand" href="#">JS Application</a> 
      </div> 
     </div> 
    </nav> 

    <div class="container main-container"> 
     <div class="row"> 
      <div class="col-xs-12"> 
       <ul class="list-inline list-unstyled requests"> 
        <li><a href="index.html" class="btn btn-primary">Home</a></li> 
        <li><button type="button" class="btn btn-default js-login">Login</button></li> 
        <li><button type="button" class="btn btn-default js-call-api">Call API</button></li> 
        <li><button type="button" class="btn btn-danger js-logout">Logout</button></li> 
       </ul> 
      </div> 
     </div> 

     <div class="row"> 
      <div class="col-xs-6"> 
       <div class="panel panel-default"> 
        <div class="panel-heading">User data</div> 
        <div class="panel-body"> 
         <pre class="js-user"></pre> 
        </div> 
       </div> 
      </div> 

      <div class="col-xs-6"> 
       <div class="panel panel-default"> 
        <div class="panel-heading">API call result</div> 
        <div class="panel-body"> 
         <pre class="js-api-result"></pre> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 

    <script src="node_modules/jquery/dist/jquery.js"></script> 
    <script src="node_modules/bootstrap/dist/js/bootstrap.js"></script> 
    <script src="node_modules/oidc-client/dist/oidc-client.js"></script> 

    <script> 
     // helper function to show data to the user 
     function display(selector, data) { 
      if (data && typeof data === 'string') { 
       data = JSON.parse(data); 
      } 
      if (data) { 
       data = JSON.stringify(data, null, 2); 
      } 

      $(selector).text(data); 
     } 


     var settings = { 
      authority: 'http://snf-761523.vm.okeanos.grnet.gr:8080/openid-connect-server-webapp', 
      client_id: 'client', 
      client_secret: "secret", 
      user_id: "user", 
      popup_redirect_uri: 'http://localhost/jsApp/popup.html', 
      silent_redirect_uri: 'http://localhost/jsApp/silent-renew.html', 
      post_logout_redirect_uri: 'http://localhost/jsApp/index.html', 

      response_type: 'token id_token', 
      scope: 'openid profile email offline_access', 

      filterProtocolClaims: false 
     }; 

     var manager = new Oidc.UserManager(settings); 
     var user; 

     Oidc.Log.logger = console; 

     manager.events.addUserLoaded(function (loadedUser) { 
      user = loadedUser; 
      display('.js-user', user); 
     }); 

     manager.events.addSilentRenewError(function (error) { 
      console.error('error while renewing the access token', error); 
     }); 

     manager.events.addUserSignedOut(function() { 
      alert('The user has signed out'); 
     }); 

     $('.js-login').on('click', function() { 
      manager 
       .signinPopup() 
       .catch(function (error) { 
        console.error('error while logging in through the popup', error); 
       }); 
     }); 

     $('.js-call-api').on('click', function() { 
      var headers = {}; 
      if (user && user.access_token) { 
       headers['Authorization'] = 'Bearer ' + user.access_token; 
      } 

      $.ajax({ 
       url: 'http://snf-761523.vm.okeanos.grnet.gr:8080/openid-connect-server-webapp/api/tokens/access', 
       method: 'GET', 
       dataType: 'json', 
       headers: headers 
      }).then(function (data) { 
       display('.js-api-result', data); 
      }).catch(function (error) { 
       display('.js-api-result', { 
        status: error.status, 
        statusText: error.statusText, 
        response: error.responseJSON 
       }); 
      }); 
     }); 

     $('.js-logout').on('click', function() { 
      manager 
       .signoutRedirect() 
       .catch(function (error) { 
        console.error('error while signing out user', error); 
       }); 
     }); 
    </script> 
</body> 
</html> 

Antwort

0

Es gibt nur eine vorübergehende Lösung ist hart Ihre Anwendung zum Testen und nicht für die Produktion, Deaktivieren von Web-Sicherheit auf Google Chrome

ERSTE SIE MÜSSEN ALLE INSTANZEN VON CHROM, sterben n ein Plugin installieren Called CORS Toggle und schließlich den unten commants vom Terminal oder commant Prompt

Für Windows .\chrome --args --disable-web-security --user-data-dir

Für Ubuntu Linux läuft (nur dort getestet) /opt/google/chrome/google-chrome --args --disable-web-security --user-data-dir