OpenID sregとax拡張機能の関係は何ですか?依拠当事者は、どちらを要求するか、またはその両方をどのように知るのですか?
1 に答える
sregは、おそらく機能する可能性のある最も単純なものとして作成されており、使用可能なフィールドのセットは非常に限られています。ただし、これには、、、およびが含まれるnickname
ためemail
、fullname
多くの場合、必要なのはそれだけです。
属性交換ははるかに拡張可能で機能的ですが、実際にはupdate_url
、ストアリクエストなどの機能は広く実装されていないと思います。
どちらを要求するかを知ることに関して:理論的には、プロバイダーがサポートする拡張機能は、仕様の拡張機能のセクションに記載されているように、検出フェーズで利用可能なXRDSドキュメントに記載されています。python-openid (またはOpenID Enabledの他のライブラリの1つ)を使用している場合は、次のような方法でクエリを実行できます。
auth_req = consumer.begin('http://example.com/joe')
from openid.extensions import sreg
if sreg.supportsSreg(auth_req.endpoint):
sreg_request = sreg.SRegRequest(required=['nickname','email'])
auth_req.addExtension(sreg_request)
else:
# maybe AX, maybe something else...
残念ながら、OpenID識別子の委任はそれをかなり信頼できないものにします。ユーザーは、拡張機能をまったくアドバタイズしないHTMLベースの検出方法を使用している可能性があります。また、プロバイダーと同じ拡張機能情報を含まないXRDSを使用している可能性があります。または、以前は正確でしたが現在は使用されていないXRDSを使用している可能性があります。日付の。
さらに、AX拡張機能をアドバタイズするXRDSを取得したとしても、プロバイダーがサポートする属性(つまり、どのAXスキーマ)がわからない限りです。
最も実用的なアプローチは、おそらくたくさんのものを要求することであり、いくつかのものを取り戻した場合は、それを使用できます。