JWTというJSONデータを署名してトークンとして扱う仕組みがあります。 これをRubyで扱う方法を調べてみたので、備忘録がてら書いておきます。 JWTとは JWTはJSON Web Tokenの略。 JWTが総本山で、 RFC 7519 - JSON Web Token (JWT)に規格が定義されている。 RubyでJWTを扱うには RubyでJWTを扱うためのgemがいくつかある模様。 ruby-jwt json-jwt json_web_token この中ではruby-jwtがスタンダードなようなのでこれの使い方を調べてみた。 ruby-jwt MITライセンスのオープンソース。 https://github.com/jwt/ruby-jwtでコードが公開されている。 使い方 導入 gem install jwt するか、Gemfileに
AWS Cognitoのウェブトークンの検証を実施したときのメモです。 JSON ウェブトークンの検証 - Amazon Cognito Cognitoではユーザプールごとに検証用のJWKセットをダウンロードできます https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json 使用するGem jwt jwt/ruby-jwt: A ruby implementation of the RFC 7519 OAuth JSON Web Token (JWT) standard. 通常のJWTトークンのデコードに使用 json-jwt nov/json-jwt: JSON Web Token and its family (JSON Web Signature, JSON Web Encryption
JWK Set 取得タイミング OIDC ID Tokenの署名検証時 その他 JWT 署名検証時 e.g.,) Apple の Server-to-server Notification JWK Set 取得頻度とキャッシング JWK Set には複数の鍵が含まれており、固定の URL から取得可能になっていることが多い。 OpenID Connect では /.well-known/openid-configuration にアクセスすることで JWK Set が公開されている URL (jwks_uri) を取得できる。 このエンドポイントから返される鍵は、一定期間ごとに新しいものに差し替えられたりするが、jwks_uri は固定であるため署名検証者は常にこのエンドポイントにアクセスすれば署名検証に必要な鍵が得られるようになっている。 しかし、ID Token や Server-to
2020.10.01に公開 2021.10.05に更新 Udemy 12. サーバーサイドのログイン認証 No.3 / 8 今回達成すること JWT(以下、トークン)の発行とデコードを行う、AuthTokenクラスを作成します。 このクラスはインスタンスが生成された時(newされた時) 引数にトークンがあった場合はトークンをデコードし、 トークンが無い場合はトークンを発行します。 クラスファイルの置き場所 まず、Railsの「app」ディレクトリの直下に「services(サービィシーズ)」ディレクトリを作成します。 「services」ディレクトリの中は、サービス単位でディレクトリを作成します。 今回は認証サービスを行う、「user_auth」ディレクトリを作成し、認証に使用するファイル一式を管理します。 ディレクトリ構造 api/app ├── services │ └── user_
重要. このソフトウェアは、もはやメンテナンスされていません。 OmniAuth ライブラリは何らかの認証フレームワークと組み合わせます。OpenID Connect を実装するとき、OmniAuth ストラテジとして実装しなくても、認証フレームワーク上で作ってやればよい。 認証フレームワークには Sorcery をお勧めします。Ruby on Rails の認証フレームワーク OmniAuth を使わずに, openid_connect ライブラリを直接使う形の IdP (OP) サンプルと RP サンプルを用意しました; 認証関係: サンプルプログラム OmniAuth (Ruby) 用の OpenID Connect ストラテジ。このパッケージは次のパッケージを置き換えます。 omniauth-google-oauth2 omniauth-yahoojp omniauth-azure
この記事はLIFULL Advent Calendar その3の24日目の記事です。 概要 ・認証周りについて動く物を作りながら理解を深めたいなと、RailsでOAuthによるログイン機能のサンプル作りました ・作るに辺り先人の記事が大いに参考になったのですが所々々ハマった箇所もあり、より詳細に手順を残しておければとまとめました ゴール 1 認証を行うproviderをlocalhost:3000に構築する 2 providerの認証を得ることでログインできるclientサーバをlocalhost:3001に構築する 3 1で認証を行ったのち、2のコンテンツにアクセスする 実行環境 MacOS High Sierra 10.13 Rails version: 5.2.2 Ruby version: 2.4.0 (x86_64-darwin17) 構築手順 Ruby on Railsのインス
公開資料 OpenIDファウンデーション・ジャパンでは、OpenID関連技術仕様の日本語訳や、プレゼンテーション資料、その他各種文書を公開しています。 技術仕様 OpenID Connect OpenID Connectは、OAuth 2.0をベースとする、シンプルなアイデンティティ連携プロトコルです。 ここでは日本語訳された仕様を紹介しています。原文ならびにその他の仕様については http://openid.net/connect/ をご参照ください。 OpenID Connect 1.0 specification OpenID Connect Core 1.0 日本語訳 OpenID Connect 1.0 は, OAuth 2.0 プロトコルの上にシンプルなアイデンティティレイヤーを付与したものである. このプロトコルは Client が Authorization Server
この記事はCrowdWorks Advent Calendar 2018の13日目の記事です。 認証チームの@sawadashotaです。 認証チームでは、クラウドワークスの周辺サービスがクラウドワークスのリソースにアクセスするための認証基盤をOpenID Connectの規格で開発中です。 認証チームにジョインしてまず思ったことは、「OpenID Connectってなんぞ?何からキャッチアップすればいいんだ・・・?」ということです。 今日は認証について知識ゼロだった私がOpenID Connectをどうやってキャッチアップしてきたかを書きたいと思います。 公開鍵暗号・電子署名 「暗号」と言われると、「私、文系なので・・・」と逃げたくなりますが、一旦アルゴリズムは置いといて大丈夫です。 OpenID Connectでも公開鍵暗号や電子署名の技術が使われており、「なぜ公開鍵暗号・電子署名を使
OpenID Connect 対応してるとか言っても、仕様上はOptionalだったり、定義されてなかったりで、実装上解釈の余地があるいろいろです。 というわけで、各社の現実的な実装はどうなってるのかなって思って調べるのに、リンク集をまとめておく。 特になにかを網羅するものではないですが、元ネタとしてOpenID Certificationのリンク集を参考にしております。 参考: - OpenID Certification - Certified OpenID Connect Implementations ただ上記はリンクの安定性のためか、サービス/製品のトップページとかにリンクされているものが多いようです。 が、どちらかと言えば、開発者向けのドキュメントのトップページのリンクが欲しいねん。 なので、以下は多少リンクが不安定で、時間が経つと、リンク切れなどする可能性あるけどごめんね。
このトピックでは、Tableau Server で OpenID Connect (OIDC) を使用するための ID プロバイダー (IdP) の構成に関する情報を提供します。これは、複数のステップにわたるプロセスの 1 ステップです。次のトピックでは、Tableau Server での OIDC の構成および使用に関する情報を提供します。 OpenID Connect の概要 OpenID Connect 用にアイデンティティ プロバイダーを構成する (現在のセクション) OpenID Connect に対応するように Tableau Server を構成する OpenID Connect を使用して Tableau Server にサインインする IdP の設定 Tableau Server で OpenID Connect を使用するには、ID プロバイダー (IdP) で使用する
認証は単純な概念で、別の言葉で言えば本人確認です。Web サイトにおける本人確認の最も一般的な方法は ID とパスワードの組を提示してもらうことですが、指紋や虹彩などの生体情報を用いた本人確認方法もありえます。どのような確認方法だとしても (ワンタイムパスワードを使ったり、2-way 認証だったりしても)、認証とは、誰なのかを特定するための処理です。開発者の言葉でこれを表現すると、「認証とは、ユーザーの一意識別子を特定する処理」と言えます。 一方、認可のほうは、「誰が」、「誰に」、「何の権限を」、という三つの要素が出てくるため、複雑になります。加えて、話をややこしくしているのは、この三つの要素のうち、「誰が」を決める処理が「認証処理」であるという点です。すなわち、認可処理にはその一部として認証処理が含まれているため、話がややこしくなっているのです。 認可の三要素をもう少し現場に近い言葉で表
OpenID Connect概要 OpenID Connectをひと言で説明すると、 OAuth 2.0 + Identity Layer = OpenID Connect という表現が最もふさわしい。 OpenID Connectは、「OAuth 2.0を使ってID連携をする際に、OAuth 2.0では標準化されていない機能で、かつID連携には共通して必要となる機能を標準化した」OAuth 2.0の拡張仕様の一つである。 OpenID Connect登場以前は、OAuth 1.0/2.0ベースのID連携の仕組みがTwitterやFacebookなどの巨大SNSから提供され、人気を博した。これらの仕組みは今でも広く利用されている。 一方で、OpenID Connectの1つ前のバージョンのOpenID 2.0では、ID情報の連携はできるもののAPI連携には利用できないなど、デベロッパーに強
AzureAD B2Cのススメ と関係あるような無いような記事。 Rails でユーザ管理とまではいかないものの API のアクセス制限をしたかったのでちょっと書いてみました。 直接ペタろうかとも思いましたが今まで Gist を使った事がなかったのでこれを機会に使ってみました。 一旦バリデーション無しで JWT をデコードしてからIDプロバイダ側の公開鍵をもってきてバリデーションする必要があります。 Qiitaって Gist のソース埋め込みは使えないんですね。ちょっと残念。 OPENID_CONFIGURATION_URL について OPENID_CONFIGURATION_URL は AzureB2C の場合ポータルのポリシーの詳細を開いた時に出てくるURLになります。 参考 ここの実装を参考にしました。
はじめに OpenID Connect は OAuth 2.0 を拡張する形で策定されました。 OAuth 2.0 はアクセストークン発行手順に関する仕様で、RFC 6749(The OAuth 2.0 Authorization Framework)で定義されています(参考:一番分かりやすい OAuth の説明)。 一方、OpenID Connect は ID トークン発行手順に関する仕様で、主要部分は OpenID Connect Core 1.0 で定義されています(参考:一番分かりやすい OpenID Connect の説明)。 RFC 6749 は認可エンドポイントという Web API を定義しています。 この API は必須のリクエストパラメーターとして response_type を要求します。 OpenID Connect は、この response_type の仕様を拡
本連載は、主にアプリケーション開発者を対象として、ネットワーク上の新たな境界として台頭しつつある「アイデンティティ型の境界」を実現するための数ある認証連携方式の中から、2014年2月に標準化された「OpenID Connect」に注目して仕様説明と有用性を解説します。 本記事の内容 Webアプリケーションが提供するコンテンツの多くは、ユーザー認証によって保護され、認証したユーザー向けのコンテンツが提供されます。これらの機能をアプリケーション開発者がスクラッチで実装すると、アプリケーションによってセキュリティレベルが異なる事態を招く可能性や、多大なコストがかかる恐れがあります。 そうした問題を解消するために、開発者はアプリケーションをOpenID ConnectのRelying Party(以下RP)として実装することで、第二回で紹介したようなOpenID Provider(以下OP)から連
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く