Hatena::ブログ(Diary)

湘南ぱいそん RSSフィード

2013-12-24

複数(4つ以上)のGoogleアカウントに同時にログインしているとGoogle App Engine/Users APIにログインできない

結論:
この問題が解消されるまではGoogle App Engine / Users APIを採用するべきではない。

複数(4つ以上)のGoogleアカウントに同時にログインしているユーザーは、インターネットヘビーユーザーであると予想される。スタートアップ企業が展開するようなWebサービスで、この意味不明のエラーに遭遇させるのは「致命的なこと」と言って良い。

実際の動作がどうなるかというと、Uses APIで生成したログインURLにアクセスすると、Googleアカウントの画面に遷移する。
複数のGoogleアカウントにログインしている場合、ここでどのアカウントの認証情報をGoogle App Engineへ渡すのか、を選択する画面になる。

The application <your-app-id> is requesting permission to access your Google Account.

Please select an account that you would like to use.


ところが、この後にGoogle App Engineへ戻るURLがおかしい。

http://<your-app-id>.appspot.com/_ah/conflogin

Error: Server Error

The server encountered an error and could not complete your request.
If the problem persists, please report your problem and mention this error message and the query that caused it.


代替策としてOAuthで、ほぼ同じ機能を達成できる。

ただし、OAuthではGoogle App Engineアプリケーションに対する管理者権限のフラグが取得できない。
バックオフィスの認証のみにUsers APIを利用するのであれば、「複数(4つ以上)のGoogleアカウントに同時にログインしている状態ではログインできない」ことを事前に周知しておく運用回避策が取れる。

Google - 複数のアカウントに同時にログイン
https://support.google.com/accounts/answer/1721977

Google App Engine › App Engine multi sign in Error: Server Error
https://groups.google.com/forum/#!topic/google-appengine/lD93NDrUP78

2013-05-16

Amazon S3のBucket名に”.”を使うとSSL証明書の警告が出る


http://dexlab.net/pukiwiki/index.php?Memo%2FAmazonWebServices#bec137a0

> S3のSSL証明書は'*.s3.amazonaws.com'のため、バケット名に「.」が含まれると証明書エラーになる

2013-03-06

Installing PIL with libjpeg


...
WARNING ... dev_appserver.py:3682] Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging
...

also

...
IOError: decoder jpeg not available
...

Download `jpegsrc.v6b.tar.gz`

$ open jpegsrc.v6b.tar.gz
$ cd jpeg-6b

$ vi ./configure
:set fileformat=unix
:q

$ ./configure
$ make && make test
$ sudo make install

$ cd PIL-1.1.7
$ sudo python setup.py install
…
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      darwin 2.7.2 (default, Jun 20 2012, 16:23:33)
              [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available

2013-03-01

Installing M2Crypto on Mac OS X 10.8

Installing the OpenSSL headers


$ cd openssl-x-x-x
$ ./Configure --prefix=/usr/local darwin64-x86_64-cc
$ make && make test
$ sudo make install

Installing the swig with out PCRE(Perl Compatible Regular Expressions)


$ cd swig-x.x.x
$ ./configure --prefix=/usr/local --without-pcre
$ make
$ sudo make install

Installing M2Crypto


$ workon x
$ cd ~/.virtualenvs/x/build
$ curl -O M2Crypto-0.21.1.tar.gz
$ open M2Crypto-0.21.1.tar.gz
$ cd M2Crypto-0.21.1
$ python setup.py build build_ext --openssl=/usr/local
$ python setup.py install build_ext --openssl=/usr/local

test on `workon x`


>>> import M2Crypto

refs.

2013-02-15

Note to make PassBook on Google App Engine / Python

9.3 Message-digesting process

メッセージ読みこなすプロセスは署名されているコンテンツまたは署名者の認証された属性と一緒にコンテンツのいずれかでメッセージダイジェストを計算します。いずれの場合も、メッセージ読みこなすプロセスへの初期の入力は署名される内容の "値"です。具体的には、初期の入力は署名プロセスが適用されているContentInfo価値の満足している分野のDERコード化のコンテンツ八重奏です。のみ、そのフィールドのDERコード化のコンテンツ八重奏は、識別子八重奏か長さの八重奏ではなく、消化される。

メッセージ読みこなすプロセスの結果は、(呼ばれる、非公式である、 "メッセージダイジェスト")authenticatedAttributes分野が存在しているかどうかに依存します。分野が欠けているとき、結果はただ内容のメッセージダイジェストです。分野が存在しているときは、しかし、結果は値がauthenticatedAttributes分野でcontainted属性の完全なDERコード化のメッセージダイジェストです。 (分かりやすくするために:authenticatedAttributes分野にIMPLICIT [0]タグは、属性値の一部となっていない属性値のタグのセット、およびDER SET OFタグをコード化ではなく、IMPLICIT [0]タグのさ、。長と属性値のコンテンツ八重奏と共に消化されることです。)属性値は、フィールドが存在する場合、属性としてのコンテンツタイプと内容のメッセージダイジェストを含まなければならないので、それらの値を間接的に含まれています結果。

署名されたコンテンツは、コンテンツタイプのデータを持っており、authenticatedAttributes分野が欠けていると、データの値だけ(例えば、ファイルの内容が)消化される。これは、署名されているコンテンツの長さは、暗号化処理の前で知られている必要がないという利点を持っています。このメソッドはPrivacyによって高められたメールと互換性があります。

識別子八重奏と長さの八重奏が消化されていませんが、それらは他の手段でまだ保護されています。それが同じメッセージダイジェストを持っているどんな長さのどんな2つの異なったメッセージを見つけることは計算上不可能な仮定であるので、長さの八重奏はメッセージダイジェストアルゴリズムの本質によって保護されています。さらに、コンテンツタイプが唯一識別子八重奏を決定すると仮定して、識別子八重奏は2つの方法のいずれかで暗黙のうちに保護されていますどちらか認証された属性でコンテンツタイプを含めることによって、あるいはセクションで、PEMコンパチブル代替を使用することによってコンテンツタイプはデータであることを含意9.4。

注意してください。メッセージダイジェストがDERコード化の部分で計算されるという事実は、DERがデータ転送のためにその部分を表現するのに必要なメソッドであることを意味するものではありません。確かに、それは、このドキュメントのいくつかの実装が彼らのDERエンコーディング以外にオブジェクトを格納することが期待されていますが、このような慣行はメッセージダイジェスト計算に影響しません。


9.4 Digest-encryption process

ダイジェスト暗号化プロセスへの入力 - 署名者のダイジェスト暗号化アルゴリズムに供給された値は、 - メッセージ読みこなすプロセス(非公式である、 "メッセージダイジェスト")そして、ダイジェストアルゴリズム識別子(またはオブジェクト識別子)の結果が含まれています。ダイジェスト暗号化プロセスの結果は、タイプDigestInfoの価値のBERコード化の署名者の秘密鍵で暗号化です:

DigestInfo ::= SEQUENCE {
digestAlgorithm DigestAlgorithmIdentifier,
digest Digest }

Digest ::= OCTET STRING

タイプDigestInfoのフィールドの意味は次のとおりです:

  • digestAlgorithmはコンテンツと認証された属性が消化される際のメッセージダイジェストアルゴリズム(そして、どんな関連パラメタも)を特定します。それは優れたSignerInfo価値のdigestAlgorithm分野と同じでなければなりません。
  • ダイジェストはメッセージ読みこなすプロセスの結果である。

ノート。

  1. ここで定義された署名プロセスとPKCS#1で定義された署名アルゴリズムの唯一の違いは、X.509 SIGNEDマクロと一貫性を保つために、ビット列としてそこに表現されている署名です。ここでは、暗号化されたメッセージは、オクテット文字列であるダイジェスト。
  2. 暗号化プロセスへの入力は、通常、30か、より少ない八重奏を持つことになります。 digestEncryptionAlgorithmがPKCS#1のrsaEncryptionである場合は、入力は、RSAモジュラスの長さの限り、単一のブロックで暗号化できることをこれが意味することは、合理的かつセキュリティの推奨事項と整合している少なくとも328ビットである。
  3. メッセージダイジェストアルゴリズム識別子は、1つのメッセージダイジェストアルゴリズムの危殆化に起因する被害を最小限に抑えるため、DigestInfo値に含まれています。例えば、敵が与えられたMD2メッセージダイジェストとメッセージを見つけることができたと仮定します。その敵と、次に署名者が以前に署名した一人として同じMD2メッセージダイジェストを持つメッセージを見つけて、新しいメッセージに署名として前回の署名を提示することによって、署名を偽造することができます。 DigestInfo値がメッセージダイジェストアルゴリズムを含んでいるので、この攻撃は、署名者が以前にMD2を使用した場合にのみ成功します。署名者がMD2アルゴリズムを信頼せず、常にMD5を使用しない場合は、MD2の感染は署名者には影響を与えないだろう。 DigestInfo値がメッセージダイジェストだけを含んでいた場合は、しかし、MD2の感染はどんなメッセージダイジェストアルゴリズムを使用する署名者に影響を及ぼすであろう。
  4. DigestInfo値が、ダイジェスト分野がただ内容のメッセージダイジェストまたはauthenticatedAttributes分野の完全なDERコード化のメッセージダイジェストを含むかどうかを示すものではないという事実のためにあいまいさの可能性があります。言い換えれば、それは敵がauthenticatedAttributes分野のDERコード化する内容を変更するだけで、コンテンツ上にあるように見えるものに認証された属性の署名を変換することは可能ですが、その後authenticatedAttributes分野を取り外す。コンテキストは、一般的に誤用を防ぐことができますように(逆の変換が可能ですが、内容はほとんどありません認証された属性値のDER符号化であることを必要とします)、このあいまいさは新しい問題ではありません、そして、それはかなりのものです。確かに、それだけで署名しているデータ内容にあるように見えるものに証明書または証明書失効リストに署名を変換するために敵も可能です。

<<

OpenSSL―暗号・PKI・SSL/TLSライブラリの詳細―

OpenSSL―暗号・PKI・SSL/TLSライブラリの詳細―

Connection: close