Nachdem ich die folgenden Pakete aktualisiert habe, wurde die Fehlermeldung angezeigt, dass die Datei oauth-public.key nicht gefunden wurde.
Paketvorgänge: 1 Installation, 2 Updates, 0 Entfernungen
Aktualisieren von laravel/framework (v5.4.27 => v5.4.28): Herunterladen (100%)
Defuse/PHP-Verschlüsselung installieren (v2.1.0): Herunterladen (100%)
Liga/oauth2-Server aktualisieren (5.1.3 => 5.1.4): Herunterladen (100%)
Zuerst löschte ich die beiden oauth- -Dateien in project/storage und führte dann den folgenden Befehl aus: php artisan passport: install, um neue oauth- -Dateien zu generieren.
Beim Versuch, auf eine api -Route zuzugreifen, wird folgende Fehlermeldung angezeigt.
(1/1) ErrorException chmod (/var/dev/project/storage/oauth-public.key): Vorgang fehlgeschlagen: Vorgang nicht zulässig
Stack-Trace
in CryptKey.php (Zeile 51)
at HandleExceptions-> handleError (2, 'chmod (/var/dev/project/storage/oauth-public.key): Operation fehlgeschlagen: Operation nicht zulässig', '/ var/dev/project/vendor/league/oauth2-server /src/CryptKey.php ', 51, array (' keyPath '=>' file: ///var/dev/project/storage/oauth-public.key ',' passPhrase '=> null,' keyPathPerms '=> '644'))
at chmod ('file: ///var/dev/project/storage/oauth-public.key', 384) in CryptKey.php (Zeile 51)
at CryptKey-> __construct ('file: ///var/dev/project/storage/oauth-public.key') in ResourceServer.php (Zeile 50)
Dateiberechtigungen
-rw-r--r-- user:user oauth-private.key
-rw-r--r-- user:user oauth-public.key
Update 1
Ich fand heraus, dass oauth Libaray ein Sicherheitsupdate eingeführt hat. Sicherheitsverbesserungen in Oauth V5
Version 5.1.4 ist abwärtskompatibel mit anderen 5.1.x-Versionen.
Sie werden in Ihren Serverprotokollen eine Nachricht wie folgt feststellen:
Sie müssen den Verschlüsselungsschlüssel festlegen, um die Sicherheit dieser Bibliothek zu verbessern. Weitere Informationen finden Sie auf dieser Seite. https://oauth2.thephpleague.com/v5-security-improvements/
Um diesen Hinweis zu unterdrücken, nachdem Sie eine Instanz von\League\OAuth2\Server\AuthorizationServer instanziiert haben, müssen Sie die Methode setEncryptionKey () aufrufen, die mindestens 32 Byte zufällige Daten übergibt.
Sie können dies mit base64_encode (random_bytes (32)) generieren. Alternativ können Sie, wenn Sie ein Framework wie Laravel verwenden, für das bereits ein Verschlüsselungsschlüssel generiert wurde, diesen übergeben (im Falle von Laravel verwenden Sie env ('APP_KEY')).
Das Problem ist, dass der Betreuer von Laravel Passport das beheben muss.
Update 2
Nachdem ich den Herstellerordner entfernt und composer install erneut ausgeführt habe, erhalte ich immer noch den gleichen Fehler.
Versuchen:
Sudo chown www-data:www-data storage/oauth-*.key
Sudo chmod 600 storage/oauth-*.key
Es löst mein Problem.
Gemäß dem neuesten oauth-server 5.1.4
update sollten Sie einen Verschlüsselungsschlüssel festlegen, der noch nicht in passport 2.x
implementiert ist.
Eine einfache und schnelle Lösung für dieses Problem ist die Verwendung von passport 3.x
, die oauth-server 6.x
verwendet, indem Sie Ihre composer.json
-Datei mit folgenden Informationen aktualisieren:
"laravel/passport": "^3.0"
Dann
composer update
Endlich! Ich habe die Lösung gefunden. (CentOs)
chown Apache:apache oauth-public.key
chown Apache:apache oauth-private.key
Zuerst müssen Sie den Benutzernamen Ihres Servers ermitteln: Dadurch wird der gewünschte Benutzername zurückgegeben
ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
Für mich ist es Apache
Es ist nicht sicher, den Besitzer von oauth-private.key in www-data: www-data zu ändern. Nur der oauth-public.key sollte im Besitz von www-data sein: www-data.
Das sollte ausreichen:
Sudo chown www-data:www-data oauth-public.key
Sudo chmod 600 oauth-public.key
Überprüfen Sie anschließend Ihre Berechtigungen, indem Sie diese im Speicherordner ausführen:
ls -la
Besitzer von oauth-private.key sollte NICHT WWW-Daten sein: WWW-Daten.
Eigentümer von oauth-public.key sollte www-data sein: www-data
Dies hängt auch von Ihrer Laravel- und Passport-Version ab. Wenn Sie die neueste Version von Laravel 5.4 verwenden, wird Passport 3.0 verwendet, das den Patch für das Oauth-Paket enthält.
Wenn Sie Larvel 5.3 verwenden, wird Passport 1.0 verwendet (Sie sollten ein Upgrade durchführen !!) [kein Patch], jedoch wird die stabile Version des Liga-/OAuth-Servers verwendet, die sich zu der Zeit (5.1.4) befindet, die die check -Datei enthält .
Die Lösung dafür: Sie müssen die Version 5.1.3 installieren (nicht ideal), würde aber das Problem beheben Im Projektstamm ausführencomposer require league/oauth2-server 5.1.3
Dasselbe Problem hier, ich habe vorübergehend auf eine frühere Version meiner composer.lock-Datei zurückgesetzt. Es sieht so aus, als würde das OAuth-Paket versuchen, die Berechtigungen der Schlüssel im Speicherordner zu ändern, und mein Server hat dies nicht.
Ich werde mir das Paketänderungsprotokoll ansehen und sehen, was sich geändert hat, und vielleicht die Updates nach Stunden erneut ausführen.
komponist installieren Werke für mich :)