Мне нужно создать и выдать токен клиентам на основе аутентификации имени пользователя и пароля. Я пробовал несколько подходов к решению этой проблемы, но все они столкнулись с проблемами.Предоставление JWT SecurityToken клиенту WCF
Мой первый план состоял в том, чтобы реализовать WS-Trust Issue на моей конечной точке WCF. Пример, который я нашел, который сделал это использовал:
[OperationContract(Action = "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue",
ReplyAction = "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue")]
Message IssueToken(Message rstMessage);
Однако изменения в WIF в 4,5 интегрировать его в .NET Framework собственно нарушили остальную часть образца кода, чтобы преобразовать сообщение в RequestSecurityToken. Кажется, что это делает WSTrustRequestSerializer, но для этого требуется WSTrustSerializationContext, и нет небольшой информации о том, как создать или настроить этот объект контекста.
Я пробовал просто сериализовать JWT, который я хочу использовать для моего типа SecurityToken, в строку и возвращая его клиенту, но похоже, что десериализация его в SecurityToken, который может использовать WCF, потребует от меня отправки JWTSecurityToken и Обработчик на клиенте, чего я хочу избежать. Хотя привязки WS-Trust, похоже, как-то обошли это и создали GenericXmlSecurityToken, я не могу найти, как создать один из них сам.
Любые мысли о том, как сериализовать/десериализовать объекты RequestSecurityToken и RequestSecurityTokenResponse в WS-Trust или как сериализовать/десериализовать токен за пределами структуры WS-Trust? Или другие идеи?
Почему так сложно - просто добавьте операцию GetToken (или что-то еще) и верните строку ... – leastprivilege
Проблема в том, как взять эту строку и превратить ее в SecurityToken, чтобы перейти к CreateChannelWithIssuedToken, не отправляя токен JWT и обработчик вместе с клиентом. Предполагаете ли вы, что я просто передаю токенную строку как заголовок, затем используйте поведение, чтобы вручную обработать токен? –