2009/06/25

cl-openid

ふと OpenID を使ってみようと思った。 Common Lisp にもちゃんと OpenID のライブラリがあった。 CL-OpenID

サンプルがついているのだけど、最近の Hunchentoot では次のように修正する必要があった。 get-parameters と request-uri に hunchetoot::*request* を渡してあげる。

in directory ./examples:
Modified relying-party.lisp
41
- (alist-to-lol (get-parameters))
+ (alist-to-lol (get-parameters hunchentoot:*request*))
52
- (alist-to-lol (get-parameters))
+ (alist-to-lol (get-parameters hunchentoot:*request*))
65
- (alist-to-lol (get-parameters))
+ (alist-to-lol (get-parameters hunchentoot:*request*))
85
- *relying-party* (get-parameters) ; The incoming message alist consists of GET parameters.
- (merge-uris (request-uri) (root-uri *relying-party*))))) ; Figuring out actual request URI may be more complicated with proxies
+ *relying-party* (get-parameters hunchentoot:*request*) ; The incoming message alist consists of GET parameters.
+ (merge-uris (request-uri hunchentoot:*request*) (root-uri *relying-party*))))) ; Figuring out actual request URI may be more complicated with proxies

あとは、こんな感じで動かして http://xxx.xxxx.xx:1234/cl-openid/ にアクセスする。

(require :cl-openid)
(require :cl-openid.examples)

(cl-openid.example-rp::init-relying-party
"http://xxx.xxxx.xx:1234/" "/cl-openid/")

(setq hunchentoot:*show-lisp-errors-p* t)
(hunchentoot:start (make-instance 'hunchentoot:acceptor :port 1234))

examples/relying-party.lisp を見る。 relying-party のインスタンスを作っておく。 handle-openid-request では cond で場合わけ。ふむ、使うぶんには簡単そうだ。

0 件のコメント: