Создание токена делегирования — не удается создать SecurityTokenService

Я пытаюсь создать систему, работающую с ADFS и утверждениями. На данный момент это просто «игрушечную» реализацию.

Я создал очень простое веб-приложение MVC, настроил его с помощью мастера «Удостоверение и доступ…» в Visual Studio для взаимодействия с сервером ADFS 2.0 и развернул его на Сервер IIS. Все работает нормально, и я могу просмотреть и перечислить полученные заявки.

Следующим шагом является создание службы REST на основе веб-API (представляющей серверные службы, от которых будет зависеть приложение MVC), поэтому Я хочу передать учетные данные этому внутреннему серверу, чтобы он мог принять подходящие решения по авторизации.

Таким образом, первым шагом для меня является создание токена делегирования (а затем я, надеюсь, решу, что с ним делать с точки зрения класса HttpClientдля выполнения остальных вызовов). У меня есть это:

//We need to take the bootstrap token and create an appropriate ActAs token
var rst = new RequestSecurityToken
{
    AppliesTo = new EndpointReference("https://other-iis.example.com/Rest"),
    RequestType = RequestTypes.Issue,
    KeyType = KeyTypes.Symmetric,
    ActAs = new SecurityTokenElement(((BootstrapContext)((ClaimsIdentity)User.Identity).BootstrapContext).SecurityToken)
};

var sts = new SecurityTokenService(); //This line isn't valid
var resp = sts.Issue(System.Threading.Thread.CurrentPrincipal as ClaimsPrincipal, rst);

Но проблема в том, что SecurityTokenServiceявляется абстрактным. Я не могу найти какие-либо типы, производные от этого класса, ни в System.IdentityModel, ни в System.IdentityModel.Services, и вышеприведенное не включает никаких ссылок на сервер ADFS, который я очевидно, нужно будет предоставить в какой-то момент.

Конечно, я тоже могу идти совершенно неправильным путем, или просто натыкаюсь на небольшой камень преткновения и не вижу гораздо более крупного камня, вырисовывающегося вдалеке, так что любой совет на этот счет также будет ценен.


Я просмотрел, например, Identity Delegation Scenario, но в нем используется CreateChannelActingAs, который, как я думаю, не сработает, когда я разговариваю с служба отдыха (или будет?), а также, похоже, не применима к .NET 4.5.

8
задан Damien_The_Unbeliever 29 May 2012 в 07:40
поделиться