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

目次

概要

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

これは、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?に同梱されるもよう。
(恐らく、クレームなどの情報の露見を防ぐためと思われる)

遷移元への遷移

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

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

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

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

主に、以下のようなセキュリティ上の問題への対応
によって拡張された仕様(認証に関わらずだけど)。

Proof Key for Code Exchange by OAuth Public Clients

概要

Authorization Codeグラント種別により発行された認可コードをクライアントアプリケーションが受け取る際、
悪意のあるアプリケーションがその認可コードを横取りするという、
「認可コード横取り攻撃」(authorization code interception attack)に対抗する仕様。

参考

OAuth 2.0 Multiple Response Type Encoding Practices

code token(Hybrid Flow)などの、新しいresponse_typeが追加されている。
(これにより、Token置換攻撃を防ぐなど、安全性を高めている模様)

参考

OAuth2.0 Proof of Possession

参考

こちら

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が追加された。

OAuth2.0 Proof of Possession

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

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

参考

WebAPIの認証

OAuth

JWTとOAuth2.0

ASP.NET Identity

ASP.NET Identityの外部ログイン

ASP.NET IdentityによるSTS実装


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


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