AzureFunctionを呼び出し元のグローバルIPアドレスを取得する必要があったため、
それを実装したのでメモとして残します
送信元IPアドレス取得
AzureFunctionに向けて送信されてきた情報のヘッダーに含まれているのでそれを取得する
以下の関数を作成して使用するだけで送信元IPアドレスが取得できます
下記の方法だとVisualStudio上で作成し、ローカル上で実行して確認しようとしてもIPアドレスが取得できないので、その場合はAzure上にデプロイするなどする必要があります
private static string GetIpFromRequestHeaders(HttpRequest request)
{
return (request.Headers["X-Forwarded-For"].FirstOrDefault() ?? "").Split(new char[] { ':', ',' }).FirstOrDefault();
}
IPアドレスの注意点
ただ、上記を使用するとポート番号が削除及び最初に検知したIPアドレスのみを返却します
// ヘッダー情報にあるIPアドレスにポート番号が含まれている場合
ヘッダーに含まれている情報 : 123.456.789:8888
上記関数での取得結果 : 123.456.789 // 8888が削除されている
// ヘッダー情報にあるIPアドレスが複数含まれている場合
// AzureFunctionに届くまでに経由した分後ろにIPアドレスが追加されます
// APIManagement経由でAzureFunctionを呼び出した際にもこのような形になります
ヘッダーに含まれている情報 : 123.456.789, 987.654.321
上記関数での取得結果 : 123.456.789 // 987.654.321が削除されている
// ヘッダー情報にあるIPアドレスにポート番号が含まれているかつ
// IPアドレスが複数含まれている場合
ヘッダーに含まれている情報 : 123.456.789:8888, 987.654.321
上記関数での取得結果 : 123.456.789 // ポート番号が削除され、最初のIPアドレスのみ
最初はそこそこ手間をかけないと取得できないと思っていたのですが、意外と簡単に取得できてホッとしています。ただ、やり方をすぐに忘れそう。。。
会社紹介
私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています
会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造
この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています
ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します
-
アドバンスド・ソリューション株式会社
アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...
サイトへ移動
-
お問い合わせ | アドバンスド・ソリューション株式会社
お問い合わせはこちら