マシン間認証が設定された Laravel API にリクエストを送信する外部アプリがあります。何らかの理由でシステムは開発環境で動作しますが、本番環境に移行するとすぐにリクエストが 401 エラーで返されます。
外部アプリは、すべてのリクエストの前に Laravel アプリから取得した認証トークンを保持しているため、正しく認証される必要があります
参考までに、.htaccess
何か問題があった場合に使用するファイルを次に示します。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
これは、API からトークンを取得するために外部アプリで使用するコードです。後続のリクエストで生成された有効なトークンを確認できるため、このコードが機能することはわかっています。
async function getToken() {
var data = {
'grant_type': 'client_credentials',
'client_id': process.env.CLIENT_ID,
'client_secret': process.env.CLIENT_SECRET
};
const token = await axios.post(`${process.env.REQUEST_URL}oauth/token`, data)
.then(function(response) {
return response.data['access_token'];
});
return token;
}