2017-01-19 3 views
2

Ich versuche, oauth2 Server auf Laravel Passport zu erstellen und es von Drittanbieter-Anwendung zu testen. Oauth-Server verwenden Laravel und Client verwenden Yii-Framework. Ich bin nicht in der Lage, den Client-Frontend zu ändern, und ich erstellt eine Route/api/oauth/login, die den Antrag auf OAuth-Server weiterleitet:Laravel Passport oauth/Autorisieren returns basic auth

public function actionOauthLogin() 
{ 
    $query = http_build_query([ 
     'client_id' => '12', 
     'client_secret' => '', 
     'redirect_uri' => 'http://client.loc/api/oauth/callback', 
     'response_type' => 'code', 
     'scope' => '', 
    ]); 
    return $this->redirect('http://oauth-server.loc/oauth/authorize?' . $query); 
} 

Diese Methode Handhabung/api/oauth/Callback-Route:

public function actionOauthCallback() 
{ 
    $http = new Client(); 
    $response = $http->post('http://oauth-server.loc/oauth/token', [ 
     'form_params' => [ 
      'grant_type' => 'authorization_code', 
      'client_id' => '3', 
      'client_secret' => 'TJDyfygkuga45rtyfj8&65567Yhhgjjjj', 
      'redirect_uri' => 'http://client.loc/api/oauth/callback', 
      'code' => Yii::app()->request->getParamFromRequest('code'), 
     ], 
    ]); 
    return json_decode((string) $response->getBody(), true); 
} 

Alle realisiert wie in der Dokumentation. Aber wenn ich/api/oauth/login öffne, wird die Weiterleitung an oauth-server.loc/oauth/authorize {params} weitergeleitet und ich sehe ein http-basiertes Auth-Fenster. WTF? Nginx hat keine solchen Einstellungen. Jemand weiß, was ich falsch mache? Hilf mir bitte.

+0

Gestern habe ich installiert phpleague oauth2 Client auf Yii (http://oauth2-client.thephpleague.com/providers/implementing/). Aber das Ergebnis ist das Gleiche. – epod

+0

Ich bekomme genau das gleiche Problem. Hast du eine Lösung gefunden? @epod – kirgy

Antwort

0

Ich hatte das gleiche Problem, in meinem Fall die zurückgegebenen Parameter sagte mir mein geparsten Bereich war ungültig; Einige OAuth2-APIs erfordern Bereiche, in denen dieses Problem möglicherweise auftritt.

Die Lösung besteht darin, das Array von Gültigkeitsbereichen hinzuzufügen, die von Ihrer Anwendung in der AuthServiceProvider-Startmethode zugelassen werden.

// ../app/Providers/AuthServiceProvider.php 
// ... 
    public function boot() 
    { 

     $this->registerPolicies(); 
     Passport::tokensCan([ 
      'manage-devices' => 'Manage devices', 
      'place-orders' => 'Place orders', 
      'check-status' => 'Check order status', 
     ]); 

//.. 
0

Stellen Sie sicher, dass die 'redirect_uri' => 'http://client.loc/api/oauth/callback' ist das gleiche wie die Umleitungs-URL, die in oauth_clients Tabelle mit den passenden client_id

0

Sie benötigen 0 für Spalten „personal_access_client“ setzen gespeichert wird, „password_client“ in „oauth_clients "Tabelle für unseren Kunden und set redirect_uri das gleiche wie in Anfrage.