Я рассматриваю разработку приложения, которое предоставляет услуги с использованием REST. Доступ к этим службам будет осуществляться через браузерные и небраузерные клиенты. Я ожидаю, что будет несколько установок этого программного обеспечения, принадлежащих и управляемых разными группами. Я хочу, чтобы пользователи из одной системы могли получать доступ к службам в другой. Они не будут использовать одно и то же хранилище удостоверений. Мне бы хотелось, чтобы пользователь мог аутентифицироваться в своем экземпляре, а затем использовать токен для отправки запросов в свой экземпляр и удаленные экземпляры. Это похоже на хорошее использование веб-токенов JSON (JWT). Каждая система должна быть настроена так, чтобы доверять токенам друг друга, которые подписаны сертификатами.
Я читал, что это можно сделать с помощью OAuth с токенами JWT Bearer, но это кажется более накладным, чем необходимо. Зачем обменивать токен носителя на токен доступа, а не просто использовать токены носителя? Я сомневаюсь, подходит ли OAuth в любом случае, потому что он контролирует не то, может ли система получить доступ к данным пользователя где-то еще, как многие примеры в Интернете, а то, имеет ли пользователь доступ к данным, хранящимся в системе.
Следующей частью проблемы является определение того, как создавать эти токены JWT. Кажется, что что-то вроде WS-Trust STS будет подходящим. Я не видел ни одного, который бы просто аутентифицировал пользователей и возвращал токены. Потенциально может быть полезно также иметь поддержку продления срока действия токена и проверки токенов?
Раньше мне удавалось включить этот тип возможностей с помощью SOAP с утверждениями WS-Security и SAML. Я хочу посмотреть, можно ли сделать то же самое с помощью токенов REST и JWT. В Интернете есть много сообщений, в которых советуют не внедрять собственную систему безопасности, поэтому я немного не решался продвигаться вперед. Я видел, что Microsoft добавила обработчики, чтобы позаботиться о защите сервисов с использованием токенов JWT, поэтому кажется, что они видят в этом подходе некоторую ценность.
Есть ли у кого-нибудь идеи о способах реализации такого рода федерации удостоверений для служб REST в соответствии со стандартами и простым способом?