Как использовать атрибут FavoriteFlavor в обмене атрибутами DotNetOpenAuth
Этот код показывает, как использовать Attribute Exchange с DotNetOpenAuth.
Но что, если у меня есть свой собственный закрытый провайдер и я хочу использовать пользовательские атрибуты, например FavoriteFlavor
атрибут, определенный в AcmeRequest
как часть образцов DNOA; что мне нужно сделать с DNOA, чтобы запрос выглядел примерно так (но для моего запроса FavoriteFlavor):
openid.ns.ax=http://openid.net/srv/ax/1.0
openid.ax.mode=fetch_request
openid.ax.required=name,hackergotchi
openid.ax.if_available=email,web
openid.ax.type.name=http://axschema.org/namePerson
openid.ax.type.email=http://axschema.org/contact/email
openid.ax.type.hackergotchi=http://axschema.org/media/image/default
openid.ax.type.web=http://axschema.org/contact/web/default
как определено в http://blogs.gnome.org/jamesh/2007/11/26/openid-ax/:
1 ответ
Я не уверен, что вам нужно, чтобы запрос OpenID выглядел именно так, когда вы создаете свой собственный поставщик OpenID.
Вам нужно только использовать Fetch and Store (если вы хотите разрешить сохранение данных) запросы и ответы, и это очень просто.
IAuthenticationRequest request)
var ax = new FetchRequest();
ax.Attributes.AddRequired("http://axschema.org/contact/email");
ax.Attributes.AddRequired("http://axschema.org/namePerson");
request.AddExtension(ax);
На провайдере OpendID вы должны перехватить этот запрос и создать FetchResponse
var fetchRequest = pendingRequest.GetExtension<FetchRequest>();
var fetchResponse = new FetchResponse();
fetchResponse.Attributes.Add("http://axschema.org/contact/email", "some@email.com");
fetchResponse.Attributes.Add("http://axschema.org/namePerson", "John");
pendingRequest.AddResponseExtension(fetchResponse);
Имейте в виду, что это всего лишь дополнительные шаги, необходимые для расширения Attribute Exchange.