投稿

安全な委譲の仕組みを理解する(OAuth徹底入門)

OAuth徹底入門 セキュアな認可システムを適用するための原則と実践 Justin Richer、 Antonio Sanso(著)、Authlete Inc.(監修)、須田智之(翻訳) 発売日:2019/1/30 OAuth徹底入門 セキュアな認可システムを適用するための原則と実践 (Amazonで書籍情報を表示) 今やインターネットと全く関りが無いソフトウェアは殆ど無いといっていい時代になりました。 そうなるとセキュリティの観点から様々な考慮が必要になります。 特に認証や認可に関する部分はアプリ設計の基礎になるので必須の技術や知識といえます。 実際に、トークンとか、IDaaS、OpenID Connect といった言葉をよく耳にしますが、これらの多くは OAuth 2.0 を基礎にしています。 RFC 6749:The OAuth 2.0 Authorization Framework https://www.rfc-editor.org/rfc/rfc6749 そこで今回は OAuth 2.0 に関する本を取り上げます。 「本書について」の項には以下のように書かれています。 本書は OAuth 2.0 のプロトコルとそれに付随する多くのテクノロジー、たとえば、OpenID Connect や JOSE/JWT なども含めて包括的に、そして、徹底的に見ていくことを目的としています。 私たちは読者に本書を通じて OAuth で何ができるのか、なぜ機能するのか、そして、安全でないインターネットでどうすれば適切に、そして、安全に OAuth を展開できるのかを深く理解してもらいたいと思っています。 そして「はじめに」の項に著者の思い?が書かれています。 本書では、実際に運用されている特定の OAuth プロバイダについて取り上げてはおらず、特定の API や製品についても説明していません。そうではなく、本書は OAuth 自体がどのように機能するのかを中心に取り上げており、OAuth のシステムを稼働すると、すべての OAuth の部品がどのように作用し合うのかを見ていくようになっています。 『○○プラットフォームで使える OAuth 2.0 の実装の仕方』のようなものを書きたいのではなく、『どのようなプラットフォームでも適用で...

Vagrant + VirtualBox + Ubuntu 環境の Guest Addtions を更新する手順

イメージ
本記事では Vagrant+VirtualBox+Ubuntu環境の Guest Additions を手動で更新する手順について見ていきます。 【目次】 [1]はじめに [2]概要:作業フロー [3]具体的な作業手順 (1)光学ドライブに VBoxGuestAdditions.iso ファイルを追加 (2)仮想マシンの起動(vagrant up) (3)仮想マシンにログイン(vagrant ssh) (4)ビルドツールのセットアップ (5)CD-ROM のマウント (6)VBoxLinuxAdditions.run の実行 (7)CD-ROM のマウント解除 (8)ログアウト (9)仮想マシンの終了(vagrant halt) (10)光学ドライブから VBoxGuestAdditions.iso ファイルを除去 [1]はじめに VirtualBox の Guest Additions は、共有フォルダ、時刻同期、マウスポインタの統合、クリップボード共有、画面リサイズ等々、ホストOSとゲストOSを密に統合して使いやすくしてくれる機能を提供してくれます。 Guest Additions https://www.virtualbox.org/manual/ch04.html Vagrant のベースBOXから作成した VirtualBox の仮想マシンには、この Guest Additions が予めインストールされていると思います。(Vagrant の VirtualBox 版ベースBOXの要件として、VirtualBox Guest Additions のインストールが必要となっているようです。) Creating a Base Box https://www.vagrantup.com/docs/providers/virtualbox/boxes しかし、ゲストOSをバージョンアップしたり、ホスト側の VirtualBox をバージョンアップした場合など、Guest Additions の再インストールが必要な場合もあります。 あるいは、Guest Additions が提供する機能(例えば画面リサイズや共有フォルダなど)がうまく動作しない場合などに、再インストールして試してみたい場合もあるかと思います。(特に、ソフトウェアのアッ...

Schema.org の語彙で RDFS 推論してみる(3):OWL-RL で推論

イメージ
本記事では、OWL-RL、SPARQL/RDFLib、Schema.org 語彙定義を利用して検索や推論を行います。 【目次】 [1]はじめに [2]語彙定義の一部で試してみる (1)Schema.org 語彙定義の一部を抜き出す (2)語彙定義を追加して可視化してみる (3)SPARQL で検索してみる [3]OWL-RL で推論 (1)ここで扱う推論とは:RDF(S) entailment (2)OWL-RL をインストール (3)推論を実行して可視化してみる (4)SPARQL で検索してみる [4]Schema.org 語彙定義を利用した推論や検索 [1]はじめに 本記事は、記事『 Schema.org の語彙で RDFS 推論してみる(2):機械可読な語彙定義ファイル 』の続き(第3回)です。 前回の記事では、Schema.org が提供する RDFS ベースの語彙定義を概観して、Python ライブラリ RDFLib に読み込む方法を見ました。 本記事では、Schema.org の語彙定義を利用した検索や推論を簡単に見ていきます。 なお、本記事では Google Colaboratory + RDFLib で動作を見てきましたので、RDFS 推論には、同じ環境で利用できる OWL-RL を利用します。 第1回 準備 第2回 機械可読な語彙定義ファイル 第3回 OWL-RL で推論 [2]語彙定義の一部で試してみる (1)Schema.org 語彙定義の一部を抜き出す 前回の記事で Schema.org の概念階層を中心に概観し、RDFS ベースの機械可読な定義ファイルもダウンロードできることを見ました。 以降では、これを用いた推論などを見ていきますが、Schema.org の語彙定義には多くの内容が含まれていますので、推論などによって情報がどのように変化するかを具体的に確認したいときは大変です。 そこで動きを確認しやすいように、Schema.org の語彙定義から抜粋した小さな語彙定義を作って見ていく事にします。 ここでは、第1回の記事で取得したデータに現れる概念(タイプ、クラス)について、階層関係(サブクラス関係)に絞って見てみます。 具体的には、以下の概念が出現していました。 Article Orga...

Schema.org の語彙で RDFS 推論してみる(2):機械可読な語彙定義ファイル

イメージ
本記事では Schema.org が提供する RDFS ベースの語彙定義を概観します。 【目次】 [1]はじめに [2]Schema.org の RDFS 語彙定義を概観してみる [3]機械可読な語彙定義ファイルのダウンロード [4]「http」と「https」の混在 (1)JSON-LD のコンテキストを表すURL (2)語彙の IRI (3)雑感 [5]RDFS定義ファイルをRDFLibに読み込んでみる [6]参考:JSON-LDをhttps語彙でRDFLibに読み込む例 [1]はじめに 本記事は、記事『 Schema.org の語彙で RDFS 推論してみる(1):準備 』の続き(第2回)です。 前回の記事で、Schema.org の語彙を使って記述されている Web コンテンツに埋め込まれた JSON-LD を、RDF を扱える Python ライブラリ RDFLib に読み込んで、RDFの可視化や情報抽出の例を見ました。 ところで、Schema.org は RDFS ベースの語彙定義ファイルを提供しており、これを利用すると、さらに進んだ情報利用が可能になります。 そこで本記事では、Schema.org が提供する語彙定義を概観しておきます。 第1回 準備 第2回 機械可読な語彙定義ファイル 第3回 OWL-RL で推論 [2]Schema.org の RDFS 語彙定義を概観してみる Schema.org では、多くの語彙を定義しています。ここでいう語彙とは主に、概念(タイプ、クラス)とそれらの関係です。 (注意)本記事で用いている語彙や概念、タイプ、クラス、関係、プロパティなどの用語は、RDFやOWLの定義に従って厳密に使い分けているわけではありません。 まずはブラウザを利用して、Schema.org がどのような語彙を定義しているのか概観してみます。 Organization of Schemas https://schema.org/docs/schemas.html これによると、現在 797タイプ、1453 プロパティが定義されている云々とありますので、非常に多くの語彙が定義されていることが分かります。 これらを全て見ていくのは大変ですが、これらは無秩序に定義されているわけではなく、体系立...

Schema.org の語彙で RDFS 推論してみる(1):準備

イメージ
本記事ではWebから得られる現実の簡単なデータを例に、ツールを使って SemanticWeb 技術(特に情報統合や推論)を概観します。 【目次】 [1]はじめに [2]Webから取得したJSON-LDをRDFLibで利用する (1)RDFLibへ読み込むコードの準備 (2)実行して結果を可視化してみる (3)SPARQLを使った検索例 [3]ここまでのまとめ:推論に向けて [1]はじめに 以前の記事で、Webページに埋め込まれたJSON-LDファイルをRDFLibに読み込むところまで見ました。 しかし JSON-LD は、「そもそも扱いやすいJSON形式なのだから、JSONとして扱えば十分じゃない?」といわれれば、(特定の構造を扱うだけなら、)それはその通りです。 一方で、多くのWebサイトから情報を収集して、様々な再利用を考えるなら(多様なデータを扱うなら)、その考え方はかなり面倒なことも背負うことになります。 具体的には、Schema.org の語彙を使ってマークアップされた JSON-LD を扱うとしても、本記事の執筆時点で、Schema.org のサイトによると797のクラス、1453のプロパティが定義されているようです。 Wikipediaやブログの記事だけではなく、レストランや観光地の情報、イベントや求人その他、多様な情報が Web にはあふれています。 そして時代に応じて Schema.org の語彙は増えていきますし、それに伴って多様性も増していきます。 しかも、Web コンテンツに含まれる JSON-LD に記載される内容は、Web コンテンツ制作側が決めるものなので、開発側がコントロールできるものではありません。 こうなってくると、与えられた情報構造を直接解釈する方式で対応するのは厳しいと思います。(厳密なスキーマに基づく手法は厳しくなってくると思います。) これに対して、与えられた情報構造をそのまま扱うのではなく、もう少しメタレベルの構造を基礎として多様な情報に対応していくアプローチが考えられます。 そのような技術に SemanticWeb があります。 Wikipedia: セマンティック・ウェブ SemanticWeb 技術も『銀の弾』ではないと思いますが、シナリオによっては非常に有効な技...