wake-up-neo.com

Laravel chmod (/var/dev/project/storage/oauth-public.key): Vorgang fehlgeschlagen: Vorgang nicht zulässig

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.

17
Ilario Engler

Versuchen:

Sudo chown www-data:www-data storage/oauth-*.key
Sudo chmod 600 storage/oauth-*.key

Es löst mein Problem.

24
Brooky Yen

Gemäß dem neuesten oauth-server 5.1.4update 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
12
Abdullah Raid

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

4

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

3

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

0
jai

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.

0
W Hansen

komponist installieren Werke für mich :)

0
user3385530