Connect
Nat Sakimura (@_nat)
Are you…
     SaaS Provider like
Salesforce / Azure / Google


  End User Enterprise /
      Companies.


          Geeks
Questions
To SaaS Providers:
• RESTful Architecture 100%
• SOAP?                  0%

Enterprize / Companies
• Want to get connected to SaaS Providers?
• Want to be your own IdP?
Geeks
• RESTful?   100%
• SOAP?        0%
• WS-*?        0%
Working Together



AB/Connect WG
設計方針

簡単なことは簡単に

複雑なことも可能に

モジュラー・デザイン
簡単なことは簡単に

標準化された UserInfo APIを通
じた シンプルな “Connect”
機能

モバイル環境のサポート
どうやって簡単に?
• OAuth 2.0ベース
• JSONの活用
• JSON Web Token (JWT) claims 形式

• Goal: 全ての現代的なWebプラットフォームで
  容易に実装できること
複雑なことも可能に

幅広いセキュリティレベルへの対応


Claims 集約

分散 Claims
幅広いセキュリティレベル
          への対応


                      LoA4
              LoA3
       LoA2
LoA1
  Increasing Level of Assurance →
Claims 集約

 Data       Data
Source     Source


Signed Claims


                    Relying
IdP
                     Party
分散Claims

 Data       Data         Data
Source     Source       Source


             Signed Claims

         Permission     Relying
IdP
                         Party


                      Better scalability, etc.
Connect Suite
• Messages
    – (merge of former Core, Framework, and UserInfo)
• Standard (HTTPS Binding for Messages)
    – to be written
•    Lite (Minimal Binding spec for RPs)
•    Registration
•    Discovery
•    Session Management
WHY NOT JUST OAUTH 2.0?
           http://www.sakimura.org/2011/05/1087/
図1 OpenID認証(身元確認)の場合


        1. あなた、誰?紹介状
           もらってきて。メアドも
           忘れずに。
                                        2. 紹介状書いてください。
                                                             公証人

          4. はい、紹介状。                     3. はい、どうぞ。


 伊部さん                       有栖さん


                氏名:有栖和歌子                       氏名:有栖和歌子
                メール:alice@example.com          メール:alice@example.com
                紹介者:Google                     紹介者:Google
図2 OAuthで身元確認もどきをする場合



       1. あなた、誰?自分の家の
          合鍵をください。そしたら、
          あなただと認めましょう。
                                 2. 合鍵をください。

                                               マンション管理人
         4. はい、合鍵です。              3. はい、どうぞ。


伊部さん                      有栖さん
図3 OpenID Connectの場合

       1. あなた、誰?紹介状
          もらってきて。メアドも
          忘れずに。                         2. 伊部さんにロッカーの
                                        鍵と紹介状を渡して。           執事

         4. はい、どうぞ。                      3. はい、どうぞ。


伊部さん                       有栖さん


       ロッカー    鍵作製:2011/5/15 11:00:04   ロッカー
                                               鍵作製:2011/5/15 11:00:04
               認証レベル:2                         認証レベル:2
               確認者:Google                      確認者:Google
図 4 OpenID Connectのクレーム集約、分散クレーム


                 UserInfo Endpoint
         ロッカー    氏名:有栖和歌子
                 生年月日:平成元年3月3日
                 性別:女
                 住所:千代田区1-3-5




 伊部さん
                               サイトX




                 サイトY
        サイトZ
プロトコル内容
Connect Endpoints
•   Authorization Endpoint (OAuth 2.0)
•   Token Endpoint (OAuth2.0)
•   Introspection Endpoint
•   UserInfo Endpoint
•   Registration Endpoint
•   Session Management Endpoint
Authorization Endpoint
• OAuth2.0 ( + id_token if response_type=token)
• Id_token
    – Opaque String : Introspection Endpoint に投げると以
      下のものが返る。(← Standard では、JWTを要求)

{
    "iss": "http://server.example.com",
    "user_id": "248289761001",
    "aud": "http://client.example.net",
    "exp": 1311281970
}
Token Endpoint
• OAuth2.0 + id_token
• Id_token は前述のとおり。
Introspection Endpoint

Id_tokenの内容を返す。
• Request              • Response
  – Id_token             –   Iss
                         –   user_id
                         –   aud
                         –   Exp
                         –   Iso29115
                         –   Nonce
                         –   issued_to
UserInfo Endpoint
• ユーザ情報(過去のIdentifierも)を返す。

Request                 Response
• access_token          • Id, name, given_name,
• schema                  family_name, middle_name,
                          nickname, profile, picture,
                          website, email, verified,
access_token は基本的に        gender, birthday, zoneinfo,
header に記載する。             locale, phone_umber,
                          address, updated_time,
                          openid2
Lite Authz Request
https://server.example.com/authorize?
response_type=token
&client_id=s6BhdRkqt3
&redirect_uri=https%3A%2F%2Fclient%2Eexam
ple%2Ecom%2Fcb
&scope=openid%20PPID
&state=af0ifjsldkj
Lite Authz Response
HTTP/1.1 302 Found
Location: https://client.example.com/
#access_token=SlAV32hkKG
&id_token=asdfjlw.sjfkowkd.hwlekr
&expires_in=3600
&state=af0ifjsldkj
Standardの追加分
• response_type=code をサポート
• “request”, “request_uri”
  – 署名付きリクエスト、複雑なclaimリクエストを可能
    に。
• UserInfo Response の大幅な拡張
OpenID Request Object
{
 "userinfo":
   {
     "claims":
       {
          "name": null,
          "nickname": {"optional": true},
          "email": null,
          "verified": null,
          "picture": {"optional": true},
       },
     "format": "signed"
   }
 "id_token":
   {
     "claims":
       {
         "auth_time": null
       }
     "max_age": 86400,
     "iso29115": "2"
   }
}
OpenID Claims Object
{
  "name": "Jane Doe"
  "given_name": "Jane",
  "family_name": "Doe",                                Normal
  "email": "janedoe@example.com",                      Claims
  "picture": "http://example.com/janedoe/me.jpg",
  "_claim_names": {
    "birthday": "src1",
    "eye_color": "src1",              Claims
    "payment_info": "src2",                    署名付きなので、キャッシュ
    "shipping_address": "src2",       Pointers されていても正統性を保証
    "credit_score": "src3"                          できる。
   },                                                        Aggr.
  "_claim_sources": {
    "src1": {"JWT": "JWT_header.JWT_part2.JWT_part3"},       Claims
    "src2": {
        "endpoint": “https://m.example.com/”
    },
    "src3": {                                               Dist.
        "endpoint": "https://credit.example.com/cshere", Claims
        "access_token": "ksj3n283dke”
      }
   }
}
OUTLOOK~展望

まとめに代えて
Chuck Mortimore, Salesforce




                              (source) Dale Old’s virtualsoul
(Source) Chuck Mortimore (Salesforce), “Open, Mobile, Social”, Cloud
Identity Summit 2011 Proceedings http://bit.ly/pBXcgM
(Source) Chuck Mortimore (Salesforce), “Open, Mobile, Social”, Cloud
Identity Summit 2011 Proceedings http://bit.ly/pBXcgM
(Source) Chuck Mortimore (Salesforce), “Open, Mobile, Social”, Cloud
Identity Summit 2011 Proceedings http://bit.ly/pBXcgM
(Source) Chuck Mortimore (Salesforce), “Open, Mobile, Social”, Cloud
Identity Summit 2011 Proceedings http://bit.ly/pBXcgM
(Source) Chuck Mortimore (Salesforce), “Open, Mobile, Social”, Cloud
Identity Summit 2011 Proceedings http://bit.ly/pBXcgM
(Source) Chuck Mortimore (Salesforce), “Open, Mobile, Social”, Cloud
Identity Summit 2011 Proceedings http://bit.ly/pBXcgM
(Source) Chuck Mortimore (Salesforce), “Open, Mobile, Social”, Cloud
Identity Summit 2011 Proceedings http://bit.ly/pBXcgM
(Source) Chuck Mortimore (Salesforce), “Open, Mobile, Social”, Cloud
Identity Summit 2011 Proceedings http://bit.ly/pBXcgM
(Source) Chuck Mortimore (Salesforce), “Open, Mobile, Social”, Cloud
Identity Summit 2011 Proceedings http://bit.ly/pBXcgM
api economy
  big data
personal data
  identity
OpenID Connect は、
  複数の主体に分散したAPIを
     有機的に接続して
API Economy を動かしてゆくための
   Claim Centric Framework
Working Together



AB/Connect WG
• Connect Interop – 9/12 (@OpenID Summit
  Microsoft Mountain View)
• Connect Technical Overview Summit
  (@Microsoft Mountain View)
• Official Launch – 10/17 (@iiw)
• OpenID Summit APAC – 12/1
connect

OpenID Connect - Nat Sakimura at OpenID TechNight #7