メモ: OAuth 2.0未対応メーラーで OAuth 2.0でメールを受信する
メモ: OAuth 2.0未対応メーラーで OAuth 2.0でメールを受信する
編集:2024.10.04
OAuth 2.0
パスワード漏洩による芋づる大連鎖の脆弱性を補うため総合サービスで移行が進んでいる。
同じアカウントで芋づる管理されているサービスへ被害が波及しないように最小限にする仕組み。
欠点:認証フォームにはアドレス表示がないため、フィッシングサイトに誘導された場合は目も当てられない被害が出る。
この脆弱性は将来的に問題となるだろう。
従来方式
未暗号通信やメールアプリの設定からID/パスワードが漏洩することがある
総合サービスの場合は、全サービスに波及するため OAuth 2.0に移行が進んでいる。
メールアドレスだけのアカウントの場合は、1アカウント1サービスであり従来方式(SSL)で問題ないため従来方式の絶滅はないでしょう。
メールアプリの脆弱性
- メールアプリが暗号化せずに生メールデータを保存している場合
- メールアプリに起動ロックが備わっていない場合
- メールアプリのパスワード保存が設定生データから解読できてしまう場合
- 未暗号通信でメールアプリを設定できる場合
従来方式の欠点
- メールアプリのパスワード保存がデータから解読できてしまうことが多いこと
- 誤って未暗号通信でメールアプリを設定していることが多いこと,警告ももないこと
方法1
OAuth 2.0必須のメールの利用をやめれば簡単に解決する
方法2
対応メールアプリを使う
方法3
中継アプリを経由する
設定難易度:中
-
- O2Popper
安心の国産、設定の解説もあって親切
URL : https://www.nips.ac.jp/~murata/o2popper/ja/
- O2Popper
設定難易度:高
上記で通すとイントラネット側からのセキュリティがなくなるため推奨できない。
アクセスイメージ
⇔ POP(SSL)
💻(中継専用アプリ)
⇔ POP(OAuth 2.0)
🌎 ✉
.
- 任意のポートの開放が必要
→ 実行サーバーの全アカウントからアクセス可能になる
→ 外部からのアクセスを受ける 外部からのポートアクセスを遮断する必要がある
→ 接続認証と暗号化を利用しない場合、悪意のあるプログラムや悪意のあるユーザーに対して無抵抗になる。
OAuth2.0のアクセストークンの有効期限
OAuth2.0のアクセストークンの有効期限は、サービスによって異なりますが、一般的には 1時間(60分)です。アクセストークンが期限切れになると、リフレッシュトークンを使用して新しいアクセストークンを取得する必要があります。
リフレッシュトークンは通常、長期間有効であり、アクセストークンの有効期限が切れた際に新しいアクセストークンを取得するために使用されます。これにより、ユーザーが再度ログインすることなく、継続的にサービスにアクセスすることができます。
POPとIMAPのトークン
POPとIMAPのトークンは同じではありません。OAuth2.0を使用する場合、POPとIMAPのそれぞれに対して異なるスコープが設定されるため、異なるトークンが発行されます。
例えば、IMAPにアクセスするためのスコープは https://outlook.office365.com/IMAP.AccessAsUser.All であり、POPにアクセスするためのスコープは https://outlook.office365.com/POP.AccessAsUser.All です。これにより、IMAP用のトークンとPOP用のトークンは異なるものとなります。
このように、特定のプロトコルに対するアクセス権限を持つトークンが発行されるため、IMAPとPOPのトークンは別々に管理されます。
📝
許可したアプリの確認
プライバシー : アプリへのアクセス
https://account.microsoft.com/privacy/app-access
コードで許可を設定する
Microsoft ID プラットフォームの認証ライブラリ
https://learn.microsoft.com/ja-jp/entra/identity-platform/reference-v2-libraries
Microsoft ID プラットフォームと OAuth 2.0 認証コード フロー
https://learn.microsoft.com/ja-jp/entra/identity-platform/v2-oauth2-auth-code-flow
仕様
- https://learn.microsoft.com/ja-jp/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth
oauth2.0リクエストには、クライアントIDが必要。
- https://console.cloud.google.com/apis/credentials/consent
-
[Copilot] GoogleとMicrosoftのOAuthクライアントIDの価格についてお答えします。
### Google
GoogleのIdentity Platformでは、OAuthクライアントID自体に料金はかかりませんが、使用する認証方法に応じて月間アクティブユーザー(MAU)ごとに料金が発生します。例えば、OpenID Connect(OIDC)やSecurity Assertion Markup Language(SAML)を使用する場合、50人以上のMAUに対して1人あたり0.015ドルの料金がかかります⁴。
### Microsoft
MicrosoftのAzure Active Directory B2Cでは、OAuthクライアントID自体に料金はかかりませんが、こちらも月間アクティブユーザー(MAU)ごとに料金が発生します。追加料金として、1人あたり0.02ドルがかかります³。
どちらのプラットフォームも、クライアントIDの作成自体は無料ですが、実際の使用に応じて料金が発生する仕組みです。
広告の表示がない分の損失をサードパティに料金負担させる仕組み。
転送設定してほかのメールアドレスで受信するか
thunderbirdなど対応したメーラーを使うことをお勧めします!