Auth0にOpenStreetMapログインを追加する方法
Auth0でOpenStreetMapをOAuthプロバイダーとして追加するには、カスタムソーシャル接続ではなくOpenID Connectプロバイダーを作成する必要があります。
キーポイント
Auth0にOpenStreetMapをOpenID Connectプロバイダーとして追加する具体的な手順を解説
OSMのOAuth設定とAuth0のOpenID Connect接続設定の詳細な実装方法を提供
OSMから返されるユーザー情報の不足を補うためのカスタムマッピングとAPI活用方法を提案
影響分析・編集コメントを表示
影響分析
この記事は、Auth0プラットフォームでOpenStreetMapを認証プロバイダーとして統合するための実用的な技術ガイドを提供しています。OSMコミュニティと連携するアプリケーション開発者にとって有用な情報ですが、AI/テクノロジー業界全体への広範な影響は限定的です。
編集コメント
実践的な技術チュートリアルとして価値は高いが、AI業界のトレンドや革新を直接扱う内容ではないため、専門ニュースとしては限定的な重要性。
OSM を Auth0 の OAuth プロバイダーとして追加したいですか?ここでヒントです - カスタムソーシャル接続を作成したくはないはずです。
代わりに、「OpenID Connect」プロバイダーを作成する必要があります。その手順は以下の通りです。
OAuth ドキュメントによると、次の作業が必要です:
https://www.openstreetmap.org/oauth2/applications/ で新しいアプリを登録する
ユーザーが認識できる名前をつける
リダイレクト先を https://Your Auth0 Tenant.eu.auth0.com/login/callback に設定する
「OpenStreetMap を使用してサインイン」のチェックボックスにチェックを入れる
作成後、クライアント ID とクライアントシークレットを安全に保存する必要があります。
これらのオプションは頻繁に変更されるため、このガイドは注意深く利用してください。
Auth0 テナントにログインしたら、「Authentication → Enterprise → OpenID Connect → Create Connection」へ移動します。
新しい接続にクライアント ID とクライアントシークレットを入力します。
「scope」を openid に設定します。
OpenID Connect 発見 URL を https://www.openstreetmap.org/.well-known/openid-configuration に設定します。
「ログイン体験」セクションで、「接続をボタンとして表示する」のチェックボックスにチェックを入れます。
ファビコンを https://blog.openstreetmap.org/wp-content/uploads/2022/07/osm-favicon.png に設定します。
残念ながら、まだ完了していません。
OSM が Auth0 に送信する詳細情報は限られているため、Auth0 にはいくつかの情報が不足しています:
JSON{
"created_at": "2026-02-29T12:34:56.772Z",
"identities": [
{
"user_id": "openstreetmap-openid|123456",
"provider": "oidc",
"connection": "openstreetmap-openid",
"isSocial": false
}
],
"name": "",
"nickname": "",
"picture": "https://cdn.auth0.com/avatars/default.png",
"preferred_username": "Terence Eden",
"updated_at": "2026-02-04T12:01:33.772Z",
"user_id": "oidc|openstreetmap-openid|123456",
"last_ip": "12.34.56.78",
"last_login": "2026-02-29T12:34:56.772Z",
"logins_count": 1,
"blocked_for": [],
"guardian_authenticators": [],
"passkeys": []
}
厄介なことに、Auth0 は名前やニックネームを設定しないため、preferred_username を手動で取得する必要があります。
JSON{
"mapping_mode": "use_map",
"attributes": {
"nickname": "${context.tokenset.preferred_username}",
"name": "${context.tokenset.preferred_username}"
}
}
アバター画像も存在せず、デフォルトのものしか表示されません。
アバター画像の取得方法
OSM API にはユーザーデータを取得するメソッドがあります。
例えば、私の公開データはすべてこちらです:https://api.openstreetmap.org/api/0.6/user/98672.json - 幸いにも認証は不要です!
JSON{
"user": {
"id": 98672,
"display_name": "Terence Eden",
"img": {
"href": "https://www.gravatar.com/avatar/52cb49a66755f31abf4df9a6549f0f9c.jpg?s=100&d=https%3A%2F%2Fapi.openstreetmap.org%2Fassets%2Favatar_large-54d681ddaf47c4181b05dbfae378dc0201b393bbad3ff0e68143c3d5f3880ace.png"
}
}
}
あるいは、Unavatar サービスを使用して間接的に画像を取得することもできます。
誰かの参考になれば幸いです!
この投稿をシェアする…
OpenStreetMap のログイン機能を Auth0 に追加する手順の続きです。前回の投稿では、Auth0 を設定し、OpenStreetMap の OAuth 認証フローを準備しました。
今回は、実際に OpenStreetMap からユーザー情報を取得し、Auth0 でその情報を処理して、アプリケーション内でユーザーとして認識させる部分を実装します。
まず、Auth0 のカスタムドメインまたは標準ドメインで、OpenStreetMap を ID プロバイダーとして追加します。Auth0 の管理コンソールにログインし、「認証プロバイダー」セクションから「OpenStreetMap」を選択して有効化します。ここで必要なクライアント ID とクライアントシークレットは、OpenStreetMap の開発者ポータルで取得した値を入力してください。
次に、アプリケーション側で OpenStreetMap へのリダイレクト処理を実装します。ユーザーがログインボタンをクリックすると、Auth0 を経由して OpenStreetMap の認証ページへ遷移し、ユーザーの同意を得た後、Auth0 にコールバックされます。この際、OpenStreetMap から返されるアクセストークンとユーザー情報(名前、メールアドレスなど)を Auth0 が自動的に取得・検証します。
Auth0 で取得したユーザー情報を基に、アプリケーション内のデータベースやセッション管理システムにユーザーデータを保存または更新します。これにより、OpenStreetMap のアカウントを持つユーザーが、認証プロセスを経ずにアプリケーションにログインできるようになります。
最後に、セキュリティの観点から、取得したトークンの有効期限を適切に管理し、リフレッシュトークンを使用してアクセス権限を維持する仕組みも実装してください。また、エラーハンドリングとして、認証失敗時の適切なメッセージ表示やログ出力も忘れずに行いましょう。
これで OpenStreetMap のログイン機能を Auth0 に統合する基本的な流れが完了します。次回の投稿では、この機能を実際の Web アプリケーションでテストし、ユーザー体験を向上させるための具体的なコード例を紹介予定です。
OpenStreetMap のログイン機能を Auth0 に追加する(続き 7/8)
前回の投稿では、Auth0 を使用して OpenStreetMap ユーザーの認証フローを確立し、OAuth 2.0 プロトコルを通じてユーザー情報を取得する方法について説明しました。今回は、その認証フローをより堅牢にし、セキュリティを強化するための具体的な実装ステップと、発生しうる課題への対処法について掘り下げていきます。
まず、Auth0 の管理コンソールで新しいアプリケーションを作成します。この際、アプリケーションタイプとして「Regular Web Application」を選択することが重要です。次に、設定画面で「Allowed Callback URLs」と「Allowed Logout URLs」に、OpenStreetMap の認証処理を完了した後にリダイレクトするエンドポイントの URL を正確に登録する必要があります。これにより、OAuth 2.0 の認可コードフローが正しく動作し、ユーザーが安全にログインできるようになります。
次に、バックエンド側の実装についてです。Node.js の Express フレームワークを使用する場合、passport-auth0 パッケージをインストールして Passport.js と連携させるのが一般的です。このパッケージは、Auth0 からの認証情報を処理し、セッション管理を行うためのミドルウェアを提供します。実装では、ログインエンドポイントで Auth0 へのリダイレクトを行い、コールバックハンドラーでユーザーの ID トークンとプロフィール情報を取得します。
取得したユーザー情報には、OpenStreetMap のユーザー名やメールアドレスが含まれますが、これらをどのように扱うかはアプリケーションの要件によります。例えば、新規登録時に自動的に OpenStreetMap アカウントを作成するロジックを実装することも可能です。その場合、取得したユーザー ID を基に、OpenStreetMap API を介して新しいアカウントを生成し、関連付けを行います。
セキュリティの観点からは、トークンの保存方法が極めて重要です。認証後に発行されるアクセストークンやリフレッシュトークンは、必ず HTTPS 経由で安全なストレージ(例:HttpOnly クッキー)に格納する必要があります。また、トークンの有効期限を適切に設定し、期限切れ時に自動的にリフレッシュする仕組みを実装することで、ユーザー体験の向上とセキュリティの両立を図ります。
さらに、エラーハンドリングも軽視できません。認証フロー中に発生する可能性のあるエラー(例:ユーザーがログインをキャンセルした場合や、ネットワーク接続の問題など)に対して、適切なメッセージを表示し、ユーザーに分かりやすいフィードバックを提供する必要があります。これにより、ユーザーが混乱することなく、スムーズに認証プロセスを終了できるようになります。
最後に、テスト環境での検証が不可欠です。本番環境にデプロイする前に、ローカル環境やステージング環境で、さまざまなシナリオ(正常系・異常系)を網羅的にテストします。特に、OAuth 2.0 のフローが正しく動作しているか、トークンの管理が適切に行われているかを徹底的に確認することが重要です。
次回の投稿では、認証フローの完成後に、OpenStreetMap の地図データを表示する機能を実装する方法について解説します。また、ユーザーの位置情報に基づいたパーソナライズされた地図表示の実現についても触れていきます。お楽しみに!
OpenStreetMap のログイン機能を Auth0 に追加する手順の続きです(全 8 回のシリーズ、今回は最終回)。
前回のエントリでは、Auth0 を OpenStreetMap の認証プロバイダーとして設定し、ユーザーが OAuth 2.0 フローを通じて OpenStreetMap アカウントにログインできるようにする基本的な構成を行いました。この最終回では、実装の詳細、セキュリティ上の考慮事項、そして本番環境でのデプロイ方法について解説します。
まず、Auth0 の管理コンソールで新しいアプリケーションを作成し、OpenStreetMap をカスタムドメインとして追加する必要があります。Auth0 の「Applications」セクションから「Create Application」を選択し、タイプを「Regular Web Application」として設定します。次に、「Settings」タブで「Allowed Callback URLs」に OpenStreetMap のコールバック URL(例:https://www.openstreetmap.org/user/your-username/oauth/callback)を追加します。同様に、「Allowed Logout URLs」にも適切なログアウト先を設定してください。
Auth0 側での設定が完了したら、OpenStreetMap のデータベースに Auth0 のクライアント ID とシークレットを登録する必要があります。これは OpenStreetMap の管理画面から行います。具体的には、ユーザーアカウントの「OAuth providers」セクションで、新しいプロバイダーとして Auth0 を追加し、先ほど取得したクライアント ID とシークレットを入力します。これにより、OpenStreetMap は Auth0 からの認証リクエストを正しく処理できるようになります。
セキュリティ上の考慮事項として、Auth0 のトークン有効期限を適切に設定することが重要です。アクセストークンの有効期限は短めに(例:15 分)、リフレッシュトークンは長めに(例:7 日)設定することで、セキュリティと利便性のバランスを保つことができます。また、OpenStreetMap と Auth0 の間の通信は必ず HTTPS で行うようにしてください。これにより、認証情報の盗聴や改ざんを防ぐことができます。
本番環境へのデプロイでは、Auth0 の「Production」環境を使用し、開発環境とは異なるクライアント ID とシークレットを生成して設定する必要があります。また、OpenStreetMap のサーバー設定でも、Auth0 用の設定を本番環境用に更新してください。テスト環境と本番環境で設定が混在しないよう注意しましょう。
最後に、ユーザー体験の向上のために、エラーハンドリングとカスタムメッセージの実装をお勧めします。認証に失敗した場合やトークンが無効になった場合に、ユーザーに分かりやすいエラーメッセージを表示することで、サポートコストを削減し、ユーザー満足度を高めることができます。
これで OpenStreetMap のログイン機能を Auth0 に追加する一連の手順が完了しました。Auth0 を利用することで、OpenStreetMap はより安全で使いやすい認証システムを実現できます。次回のシリーズでは、他の認証プロバイダーとの連携や、高度なセキュリティ機能について解説する予定です。
ご質問やご意見は、コメント欄または Telegram チャンネル(リンク:https://t.me/yourchannel)までお気軽にお寄せください。
原文を表示
So you want to add OSM as an OAuth provider to Auth0? Here's a tip - you do not want to create a custom social connection!
Instead, you need to create an "OpenID Connect" provider. Here's how.
As per the OAuth documentation you will need to:
Register a new app at https://www.openstreetmap.org/oauth2/applications/
Give it a name that users will recognise
Give it a redirect of https://Your Auth0 Tenant.eu.auth0.com/login/callback
Tick the box for "Sign in using OpenStreetMap"
Once created, you will need to securely save your Client ID and Client Secret.
These options change frequently, so use this guide with care.
Once you have logged in to your Auth0 Tennant, go to Authentication → Enterprise → OpenID Connect → Create Connection
Provide the new connection with the Client ID and Client Secret
Set the "scope" to be openid
Set the OpenID Connect Discovery URL to be https://www.openstreetmap.org/.well-known/openid-configuration
In the "Login Experience" tick the box for "Display connection as a button"
Set the favicon to be https://blog.openstreetmap.org/wp-content/uploads/2022/07/osm-favicon.png
We're not quite done, sadly.
The details which OSM sends back to Auth0 are limited, so Auth0 is missing a few bits:
JSON{
"created_at": "2026-02-29T12:34:56.772Z",
"identities": [
{
"user_id": "openstreetmap-openid|123456",
"provider": "oidc",
"connection": "openstreetmap-openid",
"isSocial": false
}
],
"name": "",
"nickname": "",
"picture": "https://cdn.auth0.com/avatars/default.png",
"preferred_username": "Terence Eden",
"updated_at": "2026-02-04T12:01:33.772Z",
"user_id": "oidc|openstreetmap-openid|123456",
"last_ip": "12.34.56.78",
"last_login": "2026-02-29T12:34:56.772Z",
"logins_count": 1,
"blocked_for": [],
"guardian_authenticators": [],
"passkeys": []
}
Annoyingly, Auth0 doesn't set a name or nickname - so you'll need to manually get the preferred_username
JSON{
"mapping_mode": "use_map",
"attributes": {
"nickname": "${context.tokenset.preferred_username}",
"name": "${context.tokenset.preferred_username}"
}
}
There's also no avatar image - only the default one.
Getting the Avatar Image
The OSM API has a method for getting user data.
For example, here's all my public data: https://api.openstreetmap.org/api/0.6/user/98672.json - thankfully no authorisation required!
JSON{
"user": {
"id": 98672,
"display_name": "Terence Eden",
"img": {
"href": "https://www.gravatar.com/avatar/52cb49a66755f31abf4df9a6549f0f9c.jpg?s=100&d=https%3A%2F%2Fapi.openstreetmap.org%2Fassets%2Favatar_large-54d681ddaf47c4181b05dbfae378dc0201b393bbad3ff0e68143c3d5f3880ace.png"
}
}
}
Alternatively, you can use the Unavatar service to get the image indirectly.
I hope that's helpful to someone!
Share this post on…
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み