Yahoo! JAPANのOpenID Certified Markの取得について

  • このエントリーをはてなブックマークに追加

Yahoo! JAPAN Tech Advent Calendar 2016の9日目の記事です。一覧はこちら

こんにちは、認証技術(ID連携)黒帯 倉林 雅(@kura_lab)です。

みなさんはYahoo! ID連携をご存じでしょうか。Yahoo! ID連携はYahoo! JAPANのシングルサインオンやユーザーの属性情報を取得するID連携の仕組みです。

これまでのYahoo! ID連携に加えて、先日新しいYahoo! ID連携を一部のサービスへ提供を開始しました。さらに、新しいYahoo! ID連携がOpenID Foundationで実施されているOpenID Connect Certificationプログラムに合格しOpenID Certified Markを取得しました。

これまでのYahoo! ID連携は継続して提供していく予定ですが、今回はYahoo! JAPANにおけるOpenID Certified Mark取得の取り組みと、今後のID連携を支えていく新しいYahoo! ID連携についてご紹介します。

OpenID Connect Certificationプログラムとは

OpenID Connect Certificationプログラム(外部サイト)とは、ID連携の技術であるOpenID Connectを実装している事業者に対して標準仕様に適合しているかをテストするプログラムです。仕様を満たしテストに合格することでOpenID Connectの仕様策定、標準化しているOpenID Foundationから適合している実装であることを示すOpenID Certified Mark(外部サイト)が与えられます。


OpenID Certified Mark

すでに海外企業ではGoogleやMicrosoft、国内企業ではNRIやオージス総研などの製品がOpenID Certified Markを取得しています。そして、今回Yahoo! JAPANのYahoo! ID連携もテストに合格しOpenID Certified Markを取得しました。

標準仕様に準拠することのメリット

OpenID Certified Markを取得すること、つまり標準仕様に準拠することのメリットは異なる実装間での相互運用性が確実になることです。言い換えるとID連携を導入するサービス(RP, Relying Party)の実装が簡単になるということです。例えば、GoogleもYahoo! JAPANもOpenID Connectの標準仕様に準拠しているため、すでにGoogle Federated Identityを導入しているサービスであればYahoo! ID連携もほぼ同じ実装で導入が可能です。また、標準仕様に対応したOSSのライブラリーも利用できるため、いろいろな開発言語や環境での導入コスト削減も期待できます。

これまでのYahoo! ID連携はOpenID Connectの標準仕様とは微妙に異なる仕様で機能を提供してきました。OpenID Connectの仕様は2014年2月にローンチされましたが、Yahoo! JAPANでは2012年の年末時点でdraftをベースとした仕様で機能の提供を開始していました。当時からYahoo! JAPANではOpenID 2.0, BBAuth, OAuth 1.0aといったID連携技術を提供していましたが、多くの企業とID連携をすすめていく上で認証と認可の2つの機能の導入やRPが導入する際のより簡単な実装が求められてきたため、仕様の最終版を待たず策定中のdraftの仕様を採用しました。(Yahoo! ID連携とは -OAuth 2.0 および OpenID Connectの仕様について-

2012年より提供されてきたdraftベースのYahoo! ID連携ですが、多様なRPのニーズに応えられるように、またより多くのサービスへ簡単に導入してもらえるように新しいYahoo! ID連携を提供し始めたわけです。

新しいYahoo! ID連携の仕様の変更点

では新しいYahoo! ID連携で具体的に変更された仕様とその理由についてみていきましょう。以下はこれまでのYahoo! ID連携と今回のOpenID Certified Mark取得後で変更された仕様の一部です。

  • ID Token・UserInfo Endpointのユーザー識別子のuser_idをsubへ変更
    • 仕様策定中の整合性のため
  • ID TokenをデコードするためのCheck ID Endpointの廃止
    • ID TokenはJSONベースのフォーマットであるため多くの場合、クライアントサイドでデコードできるため
  • ID Tokenの署名を共有鍵を用いたHMAC-SHA256から公開鍵によるRSA-SHA256へ変更
    • 署名の強度を上げることと、公開鍵にすることで鍵管理のコストを下げるため
  • ID TokenのPayloadにauth_time, armを追加
    • IdP(ID Provider)がユーザーを認証した時刻と認証方法をRPで判定できるようにするため
  • ID TokenのPayloadにat_hash, c_hashを追加
    • Access Token, Authorization CodeとID Tokenの組み合わせの改ざんを防止するため
  • Hybrid Flow対応
    • クライアントサイド、サーバーサイドの両サイドでの連携を可能にするため
  • Authorization Code Flow・Hybrid FlowにおけるToken EndpointのレスポンスでID Tokenをデフォルト返却
    • OpenID Connectではユーザーの認証を前提としているため

これらの仕様の活用方法についてはTech Blogやイベントなどの機会にご紹介できればと考えています。OpenID Connectの概要やフローについてご興味のある方は以下をご参照ください。

定義されているパラメーターや仕様についての詳細は以下の標準仕様をご参照ください。

今後のID連携の取り組み

前述したdraftとの差分を埋めOpenID Certified Markを取得することに加えて、よりよいID連携の実現に向けて大規模なシステムの刷新も行いました。今後は新しくなったYahoo! ID連携を中心に次世代の認証やID連携の仕組みを展開していく予定です。

現在、Yahoo! JAPANのIDを担うIDソリューションユニットと決済コンシューマユニットにてID連携の導入を推進しています。実際に刷新されたYahoo! ID連携の導入もはじまっていますので、その取り組みについては以下をご参照ください。

Yahoo! ID連携に関連するイベントのご紹介

Yahoo! ID連携の仕様の変更点やOpenID Certified Mark取得に至るまでの開発エピソードについては、今週末にYahoo! JAPANの紀尾井町オフィスで行われるOpenID TechNightにてご紹介する予定です。残席わずかですが、ご興味のある方はご参加ください。イベントに参加できない方向けに、後日資料を公開する予定ですのでチェックしてみてください。

これまでのYahoo! ID連携の運用について

ここまで新しくなったYahoo! ID連携についてご紹介しましたが、すでに旧バージョンを導入済みのサービスをお持ちの方はいつまで利用できるのか気になるところだと思います。具体的な旧バージョンのクローズや移行のスケジュールは未定であるため、2, 3年の間は運用していく予定です。ですが、今後の機能拡張やシステムの増強などは刷新されたバージョンを優先していくため、Yahoo! JAPANのOpenID 2.0, BBAuth, OAuth 1.0a, 旧バージョンのYahoo! ID連携をご利用の方はシステムの刷新のタイミングなどに移行について検討していただければと思います。

導入の問い合わせと仕様の公開について

現在、新しいYahoo! ID連携のご利用はお問い合わせいただいた企業のみの提供となっています。ご利用を希望される方は以下のお問い合わせよりご連絡ください。

デベロッパーネットワーク上での詳細な仕様の公開や利用については、年明け以降に準備でき次第ご案内しますので、もうしばらくお待ちください。

まとめ

OpenID Certified Mark取得や標準仕様を準拠することのメリット、新しくなったYahoo! ID連携についてご紹介しました。今回ご紹介できなかった仕様の詳細や実装方法、活用方法については次回の機会にご紹介します。みなさんのサービスにYahoo! ID連携を導入してもらいユーザーによりよい体験を提供できるように努めていきますので、今後もYahoo! ID連携をよろしくお願いします。

関連URL

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加