スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[PHP] 記事一覧

数値・日時計算
[PHP]年号算出
[PHP] 2進の数を比較すると異なる値が同じと判断されることがある

画像処理
[PHP] 簡易なCAPTCHA
[PHP] カウンタ (画像で表示)
[PHP] GDで作成する画像の画質について

ファイル・ディレクトリ
[PHP] ディレクトリを探査
[PHP] fopen() "r+" "w+" どちらも「読み込み/書き込み共用です」 どない違うねんという話

文字列・文字コード
[PHP] スクリプトをUTF-8 で記述した際の動作
[PHP] mail() でメールを送る際によくある Subject の文字化けやら
[PHP] 文字列中に特定の記号で囲まれた文字列を抽出する
[PHP] xxx.xxx.xxx.xxx/yy の形のIP帯域指定にマッチするかをチェックする
[PHP] mysql_escape_string って何してんのというメモ
[PHP] 一定文字数で強制的に改行を挿入したい
[PHP] 都道府県の文字列をコードに変換するツール

フォーム・ブラウザ動作・通信
[PHP] type="image" でのvalue値の渡しについてIEとFirefoxの差異
[PHP] ファイルをPHPスクリプトを介してダウンロードさせたい
[PHP] ローカルファイルを別のサーバにFTP通信してコピーしたい

外部API
[PHP] Google Maps API のルート表示を試してみた
[PHP] twitter に自動つぶやきをする bot の作成
[PHP/Twitter] BASIC認証で作っていた bot をなるべく簡単にOAuth認証へ切替えるための作業をまとめてみた

おすすめ本:
PHP辞典 (Desktop reference)PHP辞典 (Desktop reference)
(2005/01/19)
西沢 直木

表紙の絵は趣味が合わないのですが、
そばに置いておくといいかと。
マニュアルはオンラインですぐに見られますが、
ぱっと紙をめくったほうが速いシーンもあるので。
スポンサーサイト

テーマ : PHP
ジャンル : コンピュータ

タグ : PHP

[PHP] 都道府県の文字列をコードに変換するツール


狭いのでこのフレームを別タブで開く

なんかエクセルで都道府県がガーっと並んでて、
文字列よりも都道府県コードのほうが扱いやすいときがあるじゃないですか。
変換のマクロとか組んでもいいんですけど、一回の加工だけにわざわざそれ書くのも
面倒ですし、前にどのファイルでマクロとかVBA作ったかな・・・って
探すのも面倒じゃありませんこと?

というわけで、変換するツールを作成しました。
単に文字列をコードに変換します。
左に改行で区切られた都道府県名の文字列を入れて
「都道府県名をコードに変換」ボタンを押すと
右のボックスにコードで表示します。

[PHP] ファイルを介したダウンロードで ZIPファイルをダウンロードさせるとファイルが壊れていて解凍できないでござる

以前に [PHP] ファイルをPHPスクリプトを介してダウンロードさせたい
というものを書きましたが、それを試していての事象。

ファイルを別のPHPスクリプトでアップロードし、
それを件のスクリプトでダウンロードさせるのですが、
ZIPファイルをアップロードしてからダウンロードすると、
なんか壊れたりしてて解凍ができない、あるいは解凍できるけれどエラーが出る。

アップロードした時点でFTPで確認したところファイルは正常なのです。
ならば、と元ファイルを比較してみると、先頭のところが違うっぽい。

そしてバイナリエディタでちゃんと見てみると、なんか読める文字列が。

Notice: Undefined variable ...

おおう? どうやら、ダウンロードのスクリプトで初期化してない変数に ".=" で
文字列連結をしている部分があって、その Notice が出ていたようです。
その文字列が ZIPファイルの頭にくっついて、異常なヘッダになっていたもよう。

同様の事象にであったらご確認あれ!

テーマ : PHP
ジャンル : コンピュータ

[SSO/SAML] HTTP Redirect Binding の際の SAMLメッセージのエンコード

SAMLを使った認証のやりとりで、 HTTP Redirect Binding を使うときの
SAMLメッセージ(認証要求とか、認証応答とか)のエンコードなんですが、
DEFLATE圧縮をかけないといかんのですね。

ほとんどの資料にはざっくりと 「Base64エンコードしたメッセージ」としか
書いてないので、IdP でなんで蹴られるんだろうとひどく疑問でございました。

Google のドキュメント(正確にはそこにあるサンプルコード)を見て解決。

Web-based Reference Implementation of SAML-based SSO for Google Apps
http://code.google.com/intl/ja/googleapps/domain/sso/saml_reference_implementation_web.html

"The source code for the reference SAML implementation can be downloaded here." と
なっていますので、here をクリック。
遷移先では、
Your search did not generate any results. You may want to try your search over all downloads.
とか言われるので、all downloads をクリックするとサンプルの一覧が表示されます。

php であれば、samltool_php.zip です。
そのなかの saml_util.php に samlEncodeMessage() という関数がありますので、
そこを参照ください。


function samlEncodeMessage($msg) {
$encmsg = gzdeflate($msg);
$encmsg = base64_encode($encmsg);
$encmsg = urlencode($encmsg);
return $encmsg;
}


つまり、gzdeflate() で DEFLATE圧縮、BASE64エンコード、URLエンコードとかけて
URLにつなげてクエリ文字列にするわけですね。


まだ SSO/SAML 関連の技術情報は、あまり日本語では出回っていないようです。
Software Design の下記の号でとりあげられてはいますが網羅的で、
なんとなく理解するにはいいものの、実際にどう現行のWebアプリケーションを
対応させていくのか、というのは OASIS の SAML仕様の原文などにあたってみるのが
面倒ながらも確実かと思います。

Software Design (ソフトウェア デザイン) 2010年 09月号 [雑誌]Software Design (ソフトウェア デザイン) 2010年 09月号 [雑誌]
(2010/08/18)


第1特集
クラウド対策もこれでOK!
統合認証システム構築術
OpenAM/SAML/OpenLDAP/Active Directory



そのほか参考になる資料:

OpenSSO 技術情報 - Open Source Solution Technology Corporation
http://www.osstech.co.jp/techinfo/opensso
 ※「SAML 入門」のリンクからPDF資料。「OpenSSO社内勉強会第二回- SAML -」

第1回 OpenSSO&OpenAMコンソーシアム 技術セミナー | OpenSSO&OpenAMコンソーシアム
http://www.openam.jp/event/event07.html
 ※「OSStech 講演資料」のリンクからPDF資料。「OpenAM入門」

JapanSIG/Documents/TechTutorials - The Project Liberty Wiki
http://wiki.projectliberty.org/index.php/JapanSIG/Documents/TechTutorials
 ※「SAML 2.0 アイデンティティ連携技術」「SAML 2.0 の可能性」

[運用]Windowsで構築する、クラウド・サービスと社内システムのSSO環境
第2回 クラウド・コンピューティング時代の認証技術

http://www.atmarkit.co.jp/fwin2k/operation/adfs2sso02/adfs2sso02_01.html

simpleSAMLphp
http://simplesamlphp.org/
 PHPベースで、認証まわりを行ってくれる( IdP や SP の接続部分を簡便にしてくれる? )もののようです。
 環境が PHP version >= 5.2.0 とのことで、今回私のほうでは使用を保留しました。
 使わないにしても、ソースを追っていくと示唆が多いかもしれません。

テーマ : プログラミング
ジャンル : コンピュータ

検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。