Решил некоторые заметки касательно программирования также вести в блоге, т.к. мне и коллегам периодически приходится сталкиваться с одинаковыми или похожими задачами. Возможно, информация будет полезна кому-либо ещё…
В Azure Access Control Services нет встроенной поддержки провайдеров OpenID, по крайней мере, на момент написания этого поста. Нет и возможности добавить такой identity provider через Access Control Service Management Portal (т.е. в браузере). Поэтому добавлять его надо, обращаясь к Management Service с помощью программы-клиента.
Это легко делается вот по этому HowTo, но (важно!) адрес входа для LiveJournal будет другой, вместо приведенного в руководстве, указываем вот такой:
http://www.livejournal.com/openid/server.bml
Желательно также указать и имя identity provider’а.
После того, как созданный нами identity provider появился в списке в Access Control Service Management Portal, нужно вручную (ссылка «Generate» тут не поможет) настроить правило, чтобы пробросить claims:
Input claim issuer: Выбираем наш провайдер LiveJournal
Input claim type: Any
Input claim value: Any
Output claim type: Pass through first input claim type
Output claim value: Pass through first input claim value
И ещё одно дополнение. В программе, приведенной в HowTo, провайдер добавляется без картинки — только название и URL.
Чтобы добавить картинку, нужно перед этим блоком:
// Make the identity provider available to relying parties,
// except the Management Service
foreach (RelyingParty rp in svc.RelyingParties)
добавить такой кусок:
// Update the identity provider login image address
var imageAddress = new IdentityProviderAddress
{
Address = "Полный-URL-картинки-впишите-здесь",
EndpointType = "ImageUrl",
};
svc.AddRelatedObject(openId, "IdentityProviderAddresses",
imageAddress);
svc.SaveChanges();
Кроме типов «SignIn» и «ImageUrl» аналогичным образом можно задать и некоторые другие адреса провайдера.