タグ

2012年2月3日のブックマーク (6件)

  • 非技術者のためのOAuth認証(?)とOpenIDの違い入門【2023年版】

    昔から、「OpenIDは認証でOAuthは認可だ」などということが言われます。しかし、その言語の意味を取り違えている方が結構多い気がしています。「もうOpenIDなんていらね。OAuthだけでいいじゃん」というような言説がよく流れてくるのがその証拠だと思います。OAuth認証というのもその類ですね。 そこで、今日はOAuthとOpenIDの違いを考えてみたいと思います。 OpenIDは紹介状、OAuthは合鍵 まずはOpenIDの概要の復習です。「OpenIDは認証」という言葉の内容をまずは復習してみましょう。 「認証」とは大変広い言葉でいろいろな場面で使われますが、「OpenIDは認証」という使い方の時は、「OpenIDは、いま来ている人の身元を認証」(ユーザ認証)という意味です。図にすると図1のような流れになります。 この例では、有栖さんがお客としてサービス提供をしているサイトである伊

    非技術者のためのOAuth認証(?)とOpenIDの違い入門【2023年版】
  • 単なる OAuth 2.0 を認証に使うと、車が通れるほどのどでかいセキュリティー・ホールができる

    In some of the feedback I have gotten on the openID Connect spec, the statement is made that Connect is too complicated. That OAuth 2.0 is all you need to do authentication. Many point to Identity Pro… 英語読みたくないという人のために簡単に解説すると… OAuth 2.0 の implicit flow を使って「認証」をしようとすると、とっても大きな穴が開きます。 カット&ペーストアタックが可能だからです。 OAuth 認証?は、図1のような流れになります。 図1 OAuth 認証?の流れ 一見、問題なさそうに見えます。しかし、それはすべてのサイトが「良いサイト」ならばです。 Site_A

    単なる OAuth 2.0 を認証に使うと、車が通れるほどのどでかいセキュリティー・ホールができる
  • newが嫌いな理由 -- リテラル好き好き - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Pythonはほとんど使ったことがないのですけど、「いいなぁ」と思う点はインスタンス生成にnewが不要なこと。クラス名を関数呼び出し形式で使えばいいだけ、x = Person('Tonkichi') 。いいなぁ。 リテラルがなかったら不便 newがイヤなのは、まず単純に「書くのがめんどくさい」という理由があります。別な理由もあります、僕はリテラルが大好きなんだけど、newはリテラルにとって邪魔モノなんです。ここで、リテラルってのは、値やオブジェクトを直接に表現する記法です。たいていの言語で、153は整数リテラルだし、"Hello"は文字列リテラルです。 String s = "Hello";のようなリテラルが使えないと大変ですぜ。次のようにしなきゃならないでしょう。 // これはJava風 char[] s0 = {'H', 'e', 'l', 'l', 'o'}; String s =

    newが嫌いな理由 -- リテラル好き好き - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • returnも嫌いな理由 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    キーワードnewが嫌いだって話をしました。僕、returnも嫌いなんですよ。 メイヤー先生の言い分 ここんところネタにし続けたメイヤー先生に再び登場してもらいます。メイヤー先生は、「returnはよろしくない」理由を3つあげています(『入門』の(5.8.4)、ただし以下の箇条書きは文責:檜山)。 return 変数という形を使うとき、この変数は、計算の中間結果を保持するためにだけ存在している。 return文をあっちこっちに散りばめた、複数の出口を持つ関数が作られやすい。 関数が実行した最後の文がreturn文でないとき、関数の戻り値が何であるべきか定義する必要がある。 1番目は、これだけだと何言ってるかわかりません。メイヤー先生は、「中間結果を保持する変数を使うなら、そういう変数は“戻り値専用”に決めてしまえ」と言っているのです。実際、Eiffelで採用した方法は、予約された変数Resu

    returnも嫌いな理由 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 型推論に関わる論理の概念と用語 その4:JavaScript風の擬似言語 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    与えられた項(term)に型付け(typing)することは、型に関わる基的行為ですが、なにかしら項の書き方(構文)を決めておかないと例を出せません。普通はラムダ項が使われるのですが、もっと馴染みがある構文を定義しておきましょう。以下で、項(term)と式(expression)は同じ意味で使います(使い分けの基準はありません)。 内容: ラムダ項をJavaScript風に書く let式 型let式 シリーズ目次: その1 その2 その3 その4 その5 その6 番外(型理論ってば) ラムダ項をJavaScript風に書く ラムダ計算の説明にJavaScriptは好都合です(「JavaScriptで学ぶ・プログラマのためのラムダ計算」を参照)。λ(x, y).(x + y) を function (x, y){return (x + y);} と書けます。だけど、return がいかにも邪

    型推論に関わる論理の概念と用語 その4:JavaScript風の擬似言語 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • JavaScript クイズ - latest log

    (ε・◇・)з さあみんな、クイズの時間だよ 問1. クォート( " と ' )を使わずに ["1"] を作ってみよう。 問2. 以下のコードはクロスブラウザでしょうか? YES / NO [void 0, null, 0].sort(function() { return 0; }); (ε・◇・)з 珍回答ができたら @uupaa までー 答え合わせ 答1. 以下の3つが答えです。2番目の答えはボクも分かってませんでした。 @xulapp さんに教えていただきました 1. /1/.exec(1) 2. [1+[]] 3. /1/(1) → http://d.hatena.ne.jp/uupaa/20091006/1254926477 (古いブラウザ限定) 答2. NO です。ブラウザ毎にバラバラです。この場合はES3の仕様上も不安定って事になってます(たしか) 問1. に寄せられた正解

    JavaScript クイズ - latest log