Это концептуальная проблема, которую я пытаюсь обернуть.Допустим, у меня есть служба единого входа (SSO) и две отдельные веб-службы, которые ее используют.Допустим, вход в систему единого входа происходит через OAuth, так же, как вход через Facebook.(Поправьте меня, если я ошибаюсь, что они не просто запрашивают токен доступа OAuth для рассматриваемого сайта.)
Вопрос в том, как эти две веб-службы должны предоставлять свои собственные API третьим сторонам??Учитывая, что мы выпили помощь OAuth kool, кажется логичным, что третьи стороны должны рассматриваться как потребители OAuth, и они должны запросить, чтобы пользователь утвердил для них токен доступа.Признавая, что вопрос заключается в том, должны ли веб-службы обрабатывать все эти вещи OAuth самостоятельно, когда третьи стороны регистрируются в качестве потребителей OAuth и используют только единый вход для входа в систему пользователя?Или веб-службы должны передать всю ответственность службе единого входа?Для подписанных запросов веб-служба проверяет действительность токена доступа через API единого входа и затем обрабатывает его как обычно.
Я вижу плюсы и минусы для обоих подходов.С одной стороны, первый вариант предъявляет меньше требований к единому входу, и каждый веб-сервис может обрабатывать авторизацию для своих API по-своему.С другой стороны, наличие единого входа в систему означает, что третьи стороны могут получить токены доступа, действительные для всех служб, точно так же, как пользователи могут входить во все из них.
Это может сделать пользователя лучшеопыт, так как в противном случае третьей стороне, возможно, придется постоянно запрашивать у пользователя авторизацию, поскольку ей необходимо использовать различные веб-сервисы системы, несмотря на то, что разделение между различными веб-сервисами невидимо для пользователя.Конечно, либо у единого входа должны быть какие-то общие правила доступа, либо для каждой веб-службы по-прежнему необходимо применять свои собственные правила.Кроме того, SSO, вероятно, потребуется взять какой-либо текст или HTML из веб-служб для отображения при запросе пользователя на авторизацию сторонней службы.
Есть предложения?Существуют ли какие-либо публично документированные системы, которые делают это хорошо?Я просто слишком усложняю все это?