OpenID Connect - Nat Sakimura at OpenID TechNight #7

Post on 30-Jun-2015

14275 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

Transcript

Connect

Nat Sakimura (@_nat)

Are you…

SaaS Provider like Salesforce / Azure / Google

End User Enterprise / Companies.

Geeks

Questions

To SaaS Providers:

• RESTful Architecture

• SOAP?

Enterprize / Companies

• Want to get connected to SaaS Providers?

• Want to be your own IdP?

Geeks

• RESTful?

• SOAP?

• WS-*?

100%0%

100%0%0%

Working Together

AB/Connect WG

設計方針

簡単なことは簡単に

複雑なことも可能に

モジュラー・デザイン

簡単なことは簡単に

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

モバイル環境のサポート

どうやって簡単に?

• OAuth 2.0ベース

• JSONの活用

• JSON Web Token (JWT) claims 形式

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

複雑なことも可能に

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

Claims 集約

分散 Claims

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

LoA1

LoA2

LoA3LoA4

Increasing Level of Assurance →

Claims 集約

Data Source

Data Source

IdPRelyingParty

Signed Claims

分散Claims

Data Source

Data Source

Data Source

IdPRelyingParty

Permission

Signed Claims

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認証(身元確認)の場合

氏名:有栖和歌子メール:alice@example.com紹介者:Google

1. あなた、誰?紹介状もらってきて。メアドも忘れずに。

2. 紹介状書いてください。

3. はい、どうぞ。

有栖さん

4. はい、紹介状。

氏名:有栖和歌子メール:alice@example.com紹介者:Google

公証人

伊部さん

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

2. 合鍵をください。

3. はい、どうぞ。

有栖さん

4. はい、合鍵です。

図2 OAuthで身元確認もどきをする場合

伊部さん

マンション管理人

図3 OpenID Connectの場合

鍵作製:2011/5/15 11:00:04認証レベル:2確認者:Google

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

鍵と紹介状を渡して。

3. はい、どうぞ。

有栖さん

4. はい、どうぞ。

鍵作製:2011/5/15 11:00:04認証レベル:2確認者:Google

執事

伊部さん

ロッカー ロッカー

図 4 OpenID Connectのクレーム集約、分散クレーム

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

伊部さん

ロッカー

UserInfo Endpoint

サイト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– Id_token

• Response– Iss

– user_id

– aud

– Exp

– Iso29115

– Nonce

– issued_to

UserInfo Endpoint

Request

• access_token

• schema

access_tokenは基本的にheader に記載する。

Response

• Id, name, given_name, family_name, middle_name, nickname, profile, picture, website, email, verified, gender, birthday, zoneinfo, locale, phone_umber, address, updated_time, openid2

• ユーザ情報(過去のIdentifierも)を返す。

Lite Authz Request

https://server.example.com/authorize?

response_type=token

&client_id=s6BhdRkqt3

&redirect_uri=https%3A%2F%2Fclient%2Eexample%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","email": "janedoe@example.com","picture": "http://example.com/janedoe/me.jpg","_claim_names": {"birthday": "src1","eye_color": "src1","payment_info": "src2","shipping_address": "src2","credit_score": "src3"

},"_claim_sources": {

"src1": {"JWT": "JWT_header.JWT_part2.JWT_part3"},"src2": {

"endpoint": “https://m.example.com/”},"src3": {

"endpoint": "https://credit.example.com/cshere","access_token": "ksj3n283dke”

}}

}

NormalClaims

Claims Pointers

Aggr.Claims

Dist. Claims

署名付きなので、キャッシュされていても正統性を保証

できる。

OUTLOOK~展望

まとめに代えて

(source) Dale Old’s virtualsoul

Chuck Mortimore, Salesforce

(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

top related