現在、OpenID (C# および DotNetOpenAuth 経由) を使用して、アプリ A (「彼らのアプリ」) とアプリ B (「私のアプリ」) の間のシングル サインオン機能を作成しています。
属性交換を利用して、アプリが提供するデータを取得したいと考えています。彼らの API は、AX リクエストがどのように見えるべきかを文書化しています。
openid.ns.ax = http://openid.net/srv/ax/1.0
openid.ax.type.studentids = http://theirapp.com/path/student-ids
.ax 名前空間に注意してください。これは、OpenID の AX 仕様と一致しているようです。
これは、私が DotNetOpenAuth を使用して属性を要求および取得する方法です。これは、SOおよび無数の他のソースによって示唆されています。
FetchRequest ax = new FetchRequest();
ax.Attributes.AddRequired("http://theirapp.com/path/student-ids");
request.AddExtension(ax);
と
string sIDs = String.Empty;
if (fetch != null)
sIDs = fetch.GetAttributeValue("http://theirapp.com/path/student-ids");
応答が AX 要求を完全に無視して戻ってきたとき、私は困惑しました。送信したクエリ文字列パラメーターを観察した後、実際には彼らのせいではないと思います。
openid.ns:http://specs.openid.net/auth/2.0
openid.ns.alias3:http://openid.net/srv/ax/1.0
openid.alias3.required:alias1
openid.alias3.mode:fetch_request
openid.alias3.type.alias1:http://theirapp.com/path/student-ids
openid.alias3.count.alias1:1
どうした、DotNetOpenAuth?「alias3」はどこから来たのですか? それは「斧」のはずです。私が使用しているアプリが AX 名前空間について過度に肛門的であるかどうか、または DotNetOpenAuth が必須の OpenID プロトコルに注意を払っていないかどうかはわかりません。
それで、このすべての構築の後、私の質問:
- AX リクエストは、openid.alias3 ではなく、名前空間 openid.ax にある必要があります。DotNetOpenAuth にそれを強制するにはどうすればよいですか?
- API では、要求されたプロパティに名前を付ける必要があります。この場合は、'student-ids' です。上記では、「alias1」などのデフォルト名を取得しています。カスタム名でプロパティにラベルを付けるように DotNetOpenAuth を強制するにはどうすればよいですか?
- ここで正しいのは誰ですか: openid.ax または DotNetOpenAuth を要求しないための API ですか?