-
Notifications
You must be signed in to change notification settings - Fork 0
MS_WebAPIAuthentication
- WebAPI の認証方式について纏めてみた。
- 基本的に OpenID(OAuth)系の技術が使用されている(
MS_OpenIDOAuth.md)。
以下の様な技術が使われている。
要するに、Resource Owner(ユーザ)を認証する。
ベース クライアント セキュリティ モデルを参照。
- OAuth(
MS_OpenIDOAuth.md) - OpenID Connect(
MS_OpenIDOAuth.md)
要するに、Client(アプリケーション サーバ)を認証する。
サーバー信頼モデルを参照。
-
証明書(クライアント証明書 / mTLS)
-
JWT(
MS_JWT.md)
OAuth 2.0 JWT Bearer Token Flow -
SAML(
MS_SAML.md)
OAuth 2.0 SAML Bearer Token Flow
OAuth ダンスの OAuth 2.0 が主流である。
OAuth 2.0 や OpenID Connect が使われる。
補足: 「OAuth 2.0 で認証を行う」という表現には注意が必要である。 OAuth 2.0 は認可の仕様であり、 アクセス トークンは「誰が使ってよいか」を語らない。 認証(誰であるか)が必要なら、 OpenID Connect の ID トークンを使うのが正しい。 詳細はクレームベース認証を参照。
以下が必要になる。
- [Consumer Key]
- [Consumer Secret]
- [Access Token]
- [Access Token Secret]
このため以下の様な方式になっているものと考える。
- キーの名称から、内部は OAuth 1.0a で実装されている模様。
- OAuth 2.0 であれば、サーバー信頼モデルの場合、
Client Credentials グラント種別でよいと思うが、
OAuth 1.0a であるため管理画面で [Access Token] と [Access Token Secret] を
取得している模様。
補足(最新化): X(旧 Twitter)の API は 現在 API v2 + OAuth 2.0(Authorization Code + PKCE / Client Credentials) が 主体となり、OAuth 1.0a は互換のために残る位置付けになっている。 また、API 自体が有償プラン中心に再編されている。
OAuth 2.0 JWT Bearer Token Flow が使用されている
(サービス アカウント/デーモン アプリの認証)。
補足: Microsoft Entra ID(旧 Azure AD)では、 クライアント シークレットの代わりに 証明書によるクライアント認証(
private_key_jwt) や、 Azure リソースであれば マネージド ID、 外部 CI/CD であれば ワークロード ID フェデレーションを使うことで、 シークレットを持ち回らない構成にできる。
Wio Link の生成した Token(QueryString に指定)に加えて、
HCP に登録・生成した Device ID と OAuth の Bearer Token を
Authorization ヘッダに追加している。
関連:IoTの通信プロトコル
JWT 形式の Access Token を FilterAttribute で認証して
ClaimsPrincipal を通じて連携する。
この場合、ASP.NET Identity には依存すること無く認証を行うことができる。
補足(最新化): ASP.NET Core では、
Microsoft.AspNetCore.Authentication.JwtBearerを使うのが標準である。builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.Authority = "https://login.microsoftonline.com/{tenant}/v2.0"; options.Audience = "api://my-api"; });検証時は、署名だけでなく
iss/aud/exp/nbfを必ず確認すること (audの検証漏れは、別 API 向けのトークンを受理してしまう典型的な脆弱性)。
- WebAPI
- 認証基盤
- クレームベース認証
- リソース アクセス ストラテジ
- RFC 6750 - The OAuth 2.0 Authorization Framework: Bearer Token Usage
Tags: プログラミング, 通信技術, .NET Core, ASP.NET, ASP.NET Web API
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。