マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

前提知識に、OAuth 2.0 の知識を要する。

そもそも、OAuth 2.0 を認証に使用すると、
「セキュリティ的に問題に成り得る。」と言う懸念点が幾つか在った。

OAuthによる外部ログイン(認証)をすると、通常、

OAuth 2.0 の Authorization Server で認証されたユーザのクレームが
Redirectエンドポイントに返るが、これは、OAuth 2.0 自体の仕様ではない。

外部ログイン(認証)の拡張仕様

これは、OAuth 2.0「Authorization Codeグラント種別」の拡張仕様になる。

ASP.NET Identity用のMicrosoftアカウントの外部ログイン・ライブラリの場合

動作を分析した所、

となっている。

HTTPSのため、仲介コード → Access Tokenの、Responseを確認できず、
OpenID Connectで実装されてる可能性もあると考えたが、
scopeパラメタに「openid」の値を確認できなかったので、OAuth 2.0拡張と思われる。

Redirectエンドポイント

仲介コード → Access Token → クレームへの変換処理を行っている模様。

Callbackのエンドポイント

この時点で情報は全て、.AspNet?.ExternalCookie?に同梱されるもよう。
(恐らく、クレームなどの情報の露見を防ぐためと思われる)

遷移元への遷移

認証後、遷移元へ遷移した後には、外部ログインの形跡は綺麗に消えている。

セキュリティに関する考慮点

以下をライブラリ内で処理することで、セキュリティを高くしている。

OAuth 2.0 Multiple Response Type Encoding Practices

code token(Hybrid Flow)などの、新しいresponse_typeが追加されている。

(これにより、Token置換攻撃を防ぐなど、安全性を高めている模様)

Bearer TokenやクレームをJWTアサーションに変更する

Tokenやクレームに、JWTアサーションを使用すれば、改竄、置換、CSRF(XSRF)などを検出することができる。

User-Agentやスマホネイティブでの外部ログインについての考察

課題

問題は、

サーバ間でSSO認証をする必要があること。

解決

OAuth 2.0 Multiple Response Type Encoding Practices

結局、User-Agentやスマホネイティブでも

外部ログインするしか無いのか?

→ code token(Hybrid Flow)などの、新しいresponse_typeが追加された。

Bearer TokenやクレームをJWTアサーションに変更する

→ 認証チケットに改竄検知の署名を追加するためJWTアサーションを使用。

参考

OAuth

ASP.NET Identity


Tags: :認証基盤, :ASP.NET Identity, :OAuth


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS