TypeScript:
基本認証を使用したHTTPリクエストの送信
How to: (方法)
import axios from 'axios';
async function fetchWithBasicAuth(url: string, username: string, password: string) {
try {
const response = await axios.get(url, {
auth: {
username,
password
}
});
console.log(response.data);
} catch (error) {
console.error('Authentication failed:', error);
}
}
// 例: 'https://api.example.com/data' へのベーシック認証を使ったリクエスト
fetchWithBasicAuth('https://api.example.com/data', 'my_username', 'my_password');
Sample Output (サンプル出力):
{ "some": "data" }
Or, using Node.js built-in https
module:
import https from 'https';
import { Buffer } from 'buffer';
function fetchWithBasicAuth(url: string, username: string, password: string) {
const encodedAuth = Buffer.from(`${username}:${password}`).toString('base64');
const options = {
headers: {
'Authorization': `Basic ${encodedAuth}`
}
};
https.get(url, options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => console.log(data));
}).on('error', (err) => {
console.error('Authentication failed:', err);
});
}
fetchWithBasicAuth('https://api.example.com/secure-data', 'my_username', 'my_password');
Deep Dive (詳細情報)
ベーシック認証はHTTPプロトコルで最も単純な認証の形式。RFC 7617に定義され、初期のウェブから存在。安全でないことが知られ、今はTLS(HTTPS)と併用される。ベーシック認識以外に、OAuthやBearer認証などのより安全な方法もある。
内部で、ユーザー名とパスワードはコロン(:)で連結され、Base64でエンコードされてAuthorization
ヘッダーにセットされる。しかし、Base64は暗号化ではなくエンコード手法なので、セキュリティのためHTTPSが必須。
TypeScriptではaxios
のようなライブラリやNode.jsのhttp
/https
モジュールを使って実装可能。上記の例では、最初にaxios
を使ったシンプルな例を紹介。次にノードの組み込みモジュールを使用した処理方法を説明。
See Also (関連情報)
- Axios GitHub repository: https://github.com/axios/axios
- HTTP Basic Access Authentication on MDN: https://developer.mozilla.org/docs/Web/HTTP/Authentication
- RFC 7617, The ‘Basic’ HTTP Authentication Scheme: https://tools.ietf.org/html/rfc7617
- Node.js
https
module: https://nodejs.org/api/https.html