開発者のための アイデンティティ・テクノロジー

Windows Phone と
認証の関係をまとめるけど、
おにぃちゃんのためじゃ
ないんだからね!
代理人:アリス 2012 Winter Edition
blogs.technet.com/junichia
@junichia
内容

Windows Phoneアプリに認証の仕組みを実装したい
とき、どうしたらよいか考えると眠れなくなるこ
とってよくあるよね。アリスもそうだったよ。お
にぃちゃんたちにはそんな苦労をしてほしくないの
で、アリスがやさしく解説してあげるけど、別にお
兄ちゃんのことが好きだからとか勘違いしないでほ
しいの。


                                2
おにぃちゃんに知って欲しいこと
•   IdP はたくさんあるよ
•   IdP ごとにプロトコルが違うよ
•   IdP にアクセスするためのライブラリを
    把握しておかないとやばいよ
•   おにぃちゃんだいす...ゴニョゴニョ



                           3
アイデンティティ プロバイダー
 •   Active Directory
 •   Windows Live
 •   Google
 •   Facebook
 •   Twitter
 •   OpenID 系
     ・
     ・
     ・


                        4
Windows Phone と IdP
               ライブラリ                         プロトコル                    Identity Provider
          SL.IdentityModel                   WS-Trust(SAMLトーク
      Identity Developer Training kit        ン)                         AD FS   AD DS

              Live SDK 5.0                   OAuth 2.0(draft 16)
               Download Center
                                                                         Windows Live

           Facebook C# SDK                   OAuth 2.0(draft 10)
                                                                           Facebook
                  Codeplex
                                                           Windows
       SL.Phone.Federation                   OAuth Wrap     Azure
       Windows Azure Platform Training Kit                AppFabric
                                                                            Google
                                                             ACS
                                                                          OpenID 系
                                             OAuth 1.0a
          みつからない!!                                                         Twitter
           hammock はどこいった?
                                                                                          5
Identity Provider の役割
 ユーザーを認証して、
 セキュリティトークン(アサーション)を発行する
         セキュリティトークン/アサーション




                             6
Windows Phone アプリの役割                   SNS は両方を兼
 IdPからセキュリティトークンを受け取り、                 ねているものが多
 サービスに渡す                                    い
利用者
                                IdP
         ① UserID/Password             ② 認証
      ③ セキュリティトークン       個人情報


                                  信頼
                      ⑤ 認可


          ④ セキュリティトークン

                             サービス
                                                   7
企業内システムとソーシャルアプリの違い
(プロトコルの違い)
    企業内システム
        システム間で「信頼」が担保されている
        アプリケーションを認証する必要は無い
        認証と認可の対象は「利用者」


    SNS および ソーシャルアプリ
        システム間の「信頼」は担保されていない
        信頼関係のない者同志の認証と認可が必須
            「サービス」と「人」
            「サービス」と「アプリ」
                              登場人物が多い!
            「人」と「アプリ」
            「情報」と「アプリ」

                                         8
OAuth と WS-*/SAML の違い
 •   いずれも認可をするためのプロトコル
 •   OAuth :「API へのアクセス」を「利用者が」認可する
 •   WS-*/SAML :「情報の送出」を「管理者が」認可する
 •   現在は SAML 対応製品のほうが細かな制御ができる
                         システム管理者
                                   事前に
                 SAML      承       環境設定     IdP
                           認
                    要求「情報が欲しい!」
                  応答「氏名、メアド...」
      アプリケーション             承              ユーザーの情報
                           認   その都度
                 OAuth

                   利用者(情報の持ち主)

                                                    9
ここ大事!持ち主はだれ??
利用者
      開発者               利用者        IdP
            ① UserID/Password             ② 認証
        ③ セキュリティトークン        個人情報          アイデンティ
                                            ティ
                                          プロバイダー
                                     信頼
                        ⑤ 認可
                                           サービス
利用者
                                          プロバイダー
            ④ セキュリティトークン

                                WEBアプリケーショ
                                ン

                                                   10
Facebook や Twitter の場合
     利用者                  IdP/SP
            利用している
            自分のもの


                                サービスに保存され
                                 ている個人情報




                     個人情報にアクセ
                     スしたいアプリ
            アプリ


                                            11
“API へのアクセスを認可する” とは?
 外部のアプリケーションに対し、
 各種情報にアクセスするためのAPIの利用を認可する仕組み
     Identity&Service Provider
    (Twitter/Facebook/Google 等)
         ユーザー情報
        各種特権
        氏名を閲覧
                                  API Lv1
    メールアドレスを閲覧
       投稿を閲覧
                                  API Lv2   ③ APIにアクセス   アプリ
                                  API Lv3
      つながりを閲覧
        近況を投稿                     API Lv4
      つながりを編集
                                             属性の主体
                                             (持ち主)
                                                               12
利用者                  アプリケーション                       Facebook

      アプリ利用開始



      認証/認可画面へRedirect




                                  認証/認可 画面表示
  認証/認可を完了

  CallBack url にRedirect         認可コードを発行

                                  Access Token 要求

                           Access Token 発行


                                  API 呼び出し
                                                               API
Windows Phone と Active Directory
• System.DirectoryServce がサポートされていない
   – Active Directory に直接アクセスできない
   – 何らかのサービスを介して認証の代行を依頼する必要がある


                                           AD DS
                        認証


                  利用                  認証

                                   認証代行
                                   サービス


                                                   14
Windows Phone と Active Directory Federation Service

               WS-Trust(SOAP)      AD FS           AD DS
              ① UserID/Password             ② 認証

            ⑤ セキュリティトークン                   ③ 属性

                                  ④ 属性に署名


① AD FS にはドメインのユーザーIDとパスワードを渡す(もちろん SSL)
② AD 認証は AD FS が代行
③ AD DS からユーザーの属性が返される(どんな属性を返すかはAD FSに定義されている)
④ AD FS は「属性(クレーム)」に署名をしてセキュリティートークン(SAML アサーション)
  を生成
⑤ WP アプリにはセキュリティトークンが返される

                                                           15
まとめ

 • 企業内システムとソーシャルアプリ系で
   使用するプロトコルが違うよ!

 • OAuth 2.0 の実装は習得必須!

 • AD FS の実装方法も習得必須!

 • 必要なライブラリをそろえておいてね!

 • Windows Phone 買ってね!

                         16
リソースはここに!

 Alice 2012 の BLOG
 http://blogs.technet.com/junichia/
 サンプルプロジェクトもこちらから




                                      17
おにぃちゃん
がんばって!

「Windows Phone アプリ と 認証」のまとめ

  • 1.
    開発者のための アイデンティティ・テクノロジー Windows Phoneと 認証の関係をまとめるけど、 おにぃちゃんのためじゃ ないんだからね! 代理人:アリス 2012 Winter Edition blogs.technet.com/junichia @junichia
  • 2.
  • 3.
    おにぃちゃんに知って欲しいこと • IdP はたくさんあるよ • IdP ごとにプロトコルが違うよ • IdP にアクセスするためのライブラリを 把握しておかないとやばいよ • おにぃちゃんだいす...ゴニョゴニョ 3
  • 4.
    アイデンティティ プロバイダー • Active Directory • Windows Live • Google • Facebook • Twitter • OpenID 系 ・ ・ ・ 4
  • 5.
    Windows Phone とIdP ライブラリ プロトコル Identity Provider SL.IdentityModel WS-Trust(SAMLトーク Identity Developer Training kit ン) AD FS AD DS Live SDK 5.0 OAuth 2.0(draft 16) Download Center Windows Live Facebook C# SDK OAuth 2.0(draft 10) Facebook Codeplex Windows SL.Phone.Federation OAuth Wrap Azure Windows Azure Platform Training Kit AppFabric Google ACS OpenID 系 OAuth 1.0a みつからない!! Twitter hammock はどこいった? 5
  • 6.
    Identity Provider の役割 ユーザーを認証して、 セキュリティトークン(アサーション)を発行する セキュリティトークン/アサーション 6
  • 7.
    Windows Phone アプリの役割 SNS は両方を兼 IdPからセキュリティトークンを受け取り、 ねているものが多 サービスに渡す い 利用者 IdP ① UserID/Password ② 認証 ③ セキュリティトークン 個人情報 信頼 ⑤ 認可 ④ セキュリティトークン サービス 7
  • 8.
    企業内システムとソーシャルアプリの違い (プロトコルの違い)  企業内システム  システム間で「信頼」が担保されている  アプリケーションを認証する必要は無い  認証と認可の対象は「利用者」  SNS および ソーシャルアプリ  システム間の「信頼」は担保されていない  信頼関係のない者同志の認証と認可が必須  「サービス」と「人」  「サービス」と「アプリ」 登場人物が多い!  「人」と「アプリ」  「情報」と「アプリ」 8
  • 9.
    OAuth と WS-*/SAMLの違い • いずれも認可をするためのプロトコル • OAuth :「API へのアクセス」を「利用者が」認可する • WS-*/SAML :「情報の送出」を「管理者が」認可する • 現在は SAML 対応製品のほうが細かな制御ができる システム管理者 事前に SAML 承 環境設定 IdP 認 要求「情報が欲しい!」 応答「氏名、メアド...」 アプリケーション 承 ユーザーの情報 認 その都度 OAuth 利用者(情報の持ち主) 9
  • 10.
    ここ大事!持ち主はだれ?? 利用者 開発者 利用者 IdP ① UserID/Password ② 認証 ③ セキュリティトークン 個人情報 アイデンティ ティ プロバイダー 信頼 ⑤ 認可 サービス 利用者 プロバイダー ④ セキュリティトークン WEBアプリケーショ ン 10
  • 11.
    Facebook や Twitterの場合 利用者 IdP/SP 利用している 自分のもの サービスに保存され ている個人情報 個人情報にアクセ スしたいアプリ アプリ 11
  • 12.
    “API へのアクセスを認可する” とは? 外部のアプリケーションに対し、 各種情報にアクセスするためのAPIの利用を認可する仕組み Identity&Service Provider (Twitter/Facebook/Google 等) ユーザー情報 各種特権 氏名を閲覧 API Lv1 メールアドレスを閲覧 投稿を閲覧 API Lv2 ③ APIにアクセス アプリ API Lv3 つながりを閲覧 近況を投稿 API Lv4 つながりを編集 属性の主体 (持ち主) 12
  • 13.
    利用者 アプリケーション Facebook アプリ利用開始 認証/認可画面へRedirect 認証/認可 画面表示 認証/認可を完了 CallBack url にRedirect 認可コードを発行 Access Token 要求 Access Token 発行 API 呼び出し API
  • 14.
    Windows Phone とActive Directory • System.DirectoryServce がサポートされていない – Active Directory に直接アクセスできない – 何らかのサービスを介して認証の代行を依頼する必要がある AD DS 認証 利用 認証 認証代行 サービス 14
  • 15.
    Windows Phone とActive Directory Federation Service WS-Trust(SOAP) AD FS AD DS ① UserID/Password ② 認証 ⑤ セキュリティトークン ③ 属性 ④ 属性に署名 ① AD FS にはドメインのユーザーIDとパスワードを渡す(もちろん SSL) ② AD 認証は AD FS が代行 ③ AD DS からユーザーの属性が返される(どんな属性を返すかはAD FSに定義されている) ④ AD FS は「属性(クレーム)」に署名をしてセキュリティートークン(SAML アサーション) を生成 ⑤ WP アプリにはセキュリティトークンが返される 15
  • 16.
    まとめ • 企業内システムとソーシャルアプリ系で 使用するプロトコルが違うよ! • OAuth 2.0 の実装は習得必須! • AD FS の実装方法も習得必須! • 必要なライブラリをそろえておいてね! • Windows Phone 買ってね! 16
  • 17.
    リソースはここに! Alice 2012の BLOG http://blogs.technet.com/junichia/ サンプルプロジェクトもこちらから 17
  • 18.