|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Я правильно понимаю, что обычно юзают какой-то клиент (либу) на стороне service provider-a? Ему скармливаешь endPoints и сам клиент уже рулит всеми токенами, проверками на членство в ролях и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2018, 20:07 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Агнец за бортомЯ правильно понимаю, что обычно юзают какой-то клиент (либу) на стороне service provider-a? Ему скармливаешь endPoints и сам клиент уже рулит всеми токенами, проверками на членство в ролях и т.п. Зависит от задач, от архитектуры, от топологии, от подходов и технологий. Нет конкретного решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2018, 20:37 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
hVosttАгнец за бортомЯ правильно понимаю, что обычно юзают какой-то клиент (либу) на стороне service provider-a? Ему скармливаешь endPoints и сам клиент уже рулит всеми токенами, проверками на членство в ролях и т.п. Зависит от задач, от архитектуры, от топологии, от подходов и технологий. Нет конкретного решения. Самому писать клиента что ли? Со всеми этими refresh-ами, секретными ключами и т.п.? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2018, 21:46 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Тоже ковыряю реализацию на IdentityServer4 У меня после того как я авторизируюсь получаю Хеш. Потом иду " http://localhost:5000/.well-known/openid-configuration/jwks" получаю ключи шифрования Потом имея ХЕШ и ключи вычисляю токены доступа. Все, после этого могу этим токеном подписывать обращение к WebAPI Информация о ролях и доступах получаю вот отсюда, уже потом после того как получу токены. " http://localhost:5000/connect/userinfo" Эта информацию использую на клиенте Ангуляр для того чтобы интерфейс графический пользователю отображать нужный. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2018, 22:13 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Агнец за бортомСамому писать клиента что ли? Со всеми этими refresh-ами, секретными ключами и т.п.? Зачем? http://docs.identityserver.io/en/release/reference/client.html ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2018, 23:03 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Arpanx, А что является id юзера? Он же регистрируется на IdentityServer4? Ты получаешь от него userID и его используешь уже в своём приложении? И как тут без "личного" кабинета? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2018, 23:43 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Агнец за бортом, Посмотри как это сделано на хабре. Единый вход для всех сайтов и сервисов TM, на каждом сайте свой личный кабинет, однако управление аккаунтом (логин/пароль) перекидывает на SSO. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 00:09 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
hVosttоднако управление аккаунтом (логин/пароль) перекидывает на SSO. Это и есть "личный кабинет", правильно? Управляем логином/паролем + отключаем/подключаем соцсети - типа самый минимум. userID - тот, что хранится в SSO и он "центральный". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 00:22 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
А почему, интересно в таком случае список провайдеров на основных сайтах такой бедный? Ведь нужно, чтобы сервер-провайдер аутентификации реализовывал OAuth, а добавить его может и сам пользователь. Хочу по FB, хочу - вообще по левому сайту какому-нибудь? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 00:27 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Агнец за бортом 1) Отправляем запрос к IdentityServer4 обычный GET-запрос из JSClienta/Ангуляра https://localhost:44318/connect/authorize? client_id=angularclient &redirect_uri=https%3A%2F%2Flocalhost%3A44311 &response_type=id_token%20token &scope=dataEventRecords%20securedFiles%20openid20profile &nonce=N0.258698376964128451532801480909 &state=15328014791890.33345671067938976&ui_locales=de-CH После этого запроса клиента перебрасывает из его родного JSClienta на ASP.NET MVC сайт IdentityServer4 c формой логина/пароля. 2) на сервере IdentityServer4 заполянем форму login/password 3) IdentityServer4 в ответ на успешную авторизацию делает Callback на заранее указанный адрес, (на неуспешную делает callback на другой заранее согласованный url клиента для неавторизованного случая) и сообщает на Хеш: "#id_token=eyJhbGciOiJSUzI1NiIsImtpZCI6IjA2RDNFNDZFOTEwNzNDNUQ0QkMyQzk5ODNCRTlGRjQ0OENGNjQwRDQiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJCdFBrYnBFSFBGMUx3c21ZTy1uX1JJejJRTlEifQ.eyJuYmYiOjE1MzI4MDI2ODQsImV4cCI6MTUzMjgwMjcxNCwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMTgiLCJhdWQiOiJhbmd1bGFyY2xpZW50Iiwibm9uY2UiOiJOMC4xMjUxMzQyNzQyNzcwNzEzNjE1MzI4MDI2Nzg4MTkiLCJpYXQiOjE1MzI4MDI2ODQsImF0X2hhc2giOiJVSkozNlBTb3hPd0h2MmI5TWdCM1V3Iiwic2lkIjoiMWYzYjAzMDdlY2VkNzRiM2ZhMmI0MmVlNjJiMmZjODMiLCJzdWIiOiJhYWJhYWZmOC1mMmRlLTQ3YzEtYmRjZC02MzQxZjM1ZDA3ODciLCJhdXRoX3RpbWUiOjE1MzI4MDI2ODQsImlkcCI6ImxvY2FsIiwiYW1yIjpbInB3ZCJdfQ.BHk-bTLwtopb7jp4Nigy_G3rBFZ1bBJuouk_fbCUmXAlmpin02AcoZQZazs76PfU2xjsFhl7bKJ8E9TA2kQ8nsNEy0f88J44L_MgzIfUp3lkaMqa1gsUo7iAZAf5kbtHVFXlsxAfX2enJLhWNyhJWpozC4LksEJ-ChmLvKJxfM3KBabz98Md3KBatx90_Awsy6zXfvVjqXaUVno_WUeDY0S7aWpwdedtdvfv7Ypg9EzCsSN_UyTnrV78iNRnbmMQzwcQ3M0WTitAV5oyoz8uDHH3gpWfgQXVG8s9m2sNGja7WCHHRNhCwY5Eh3lQLTtG8BYcFJS8ZzXn4UqjKWOHlQ&access_token=1d275edf73f5a0ba856707e6b201484b8b9cb37a1c8822e6ec7ae7b0f917b509&token_type=Bearer&expires_in=330&scope=openid%20profile%20dataEventRecords%20securedFiles&state=15328026788190.44407987383214875&session_state=o4dw9uykjgBcxJ_S5mgbCz2BLKn_9AArUB0uPW-qcPo.dd523232979f073b91eb7dfa08c9b0c1" этот ответ Ангуляр/JSClient запоминает где-то у себя в store сессии 4) потом Ангуляр/JSClient ломиться Get-запросом опять на Identity сервер на специальный URL " http://localhost:44318/.well-known/openid-configuration/jwks", в ответ сервер присылает какие-то ключи. что-то такое: {"keys":[{"kty":"RSA","use":"sig","kid":"06D3E46E91073C5D4BC2C9983BE9FF448CF640D4","x5t":"BtPkbpEHPF1LwsmYO-n_RIz2QNQ","e":"AQAB","n":"sOzqgYngkiOaAuK15FI-SUzhU9uq7SLCfDI-h5uOeKwW9gpH6iyDiXp1mCCCWJiGEWvwxfCpjP7rSj9Trv7cx1h2M33EMRQ3ImJkYIlxeoEwgOaXwL3mK0931bUk4s2HKUUi5pAR7Y7QlEzzaL3EeyfdkRkXspAGMgmZHTnxMILnXWeFuyApRtPJkg2jIohwkARtTHjocZ9E2pgIHZ-s4H9A1jk0vFIwDoX5vmAyjkbwrZkSa2Sk1mf1ELpH261YaWCUVqbuzqmi-JOi1s0L9ONJORSLh6wNw2oH9ExRyp9dZHcoLSKvhiwxCzO_9xNt4S1JZLgejfTu8EKKZe8-0w","x5c":["MIIDDjCCAfqgAwIBAgIQSkEsGuYMeZRFzN5Z75UPGTAJBgUrDgMCHQUAMBQxEjAQBgNVBAMTCWRhbWllbmJvZDAeFw0xMDAxMjAyMzAwMDBaFw0yMDAxMjAyMzAwMDBaMBoxGDAWBgNVBAMTD2RhbWllbmJvZHNlcnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALDs6oGJ4JIjmgLiteRSPklM4VPbqu0iwnwyPoebjnisFvYKR+osg4l6dZgggliYhhFr8MXwqYz+60o/U67+3MdYdjN9xDEUNyJiZGCJcXqBMIDml8C95itPd9W1JOLNhylFIuaQEe2O0JRM82i9xHsn3ZEZF7KQBjIJmR058TCC511nhbsgKUbTyZINoyKIcJAEbUx46HGfRNqYCB2frOB/QNY5NLxSMA6F+b5gMo5G8K2ZEmtkpNZn9RC6R9utWGlglFam7s6poviTotbNC/TjSTkUi4esDcNqB/RMUcqfXWR3KC0ir4YsMQszv/cTbeEtSWS4Ho307vBCimXvPtMCAwEAAaNeMFwwEwYDVR0lBAwwCgYIKwYBBQUHAwEwRQYDVR0BBD4wPIAQ1My0H7LinPSutQIwzgufiqEWMBQxEjAQBgNVBAMTCWRhbWllbmJvZIIQbEw9c+es77BHxIknuXjKhjAJBgUrDgMCHQUAA4IBAQA4yFhqLKYcA3e8dUCwKsD2iikow5amT+DWjqhZEEZxkGA/I47hCoUHYW+jMiwJBiiSVYmnu0fCCjOgvS5i9DgAIhVIs+mhuNPSThwNf/IsCxoM1dPfw3JEXYffP/7/Yk8wyxQJ+9VGIO1H19am6d/jolKMfBNIk/2rHSeLzph6C1GkL+OcZevqOoElC1/jt5LoHtUw2vnK4E6uZpNpvUD7AmMSkXd9979F7pZxY/Bn2AqeQVYfGuLvimVJSJNNx26L5k6Ah+sH+bXV3LX0wXOV4JfnUh3tpe15ymQDZQ72jmCZe6JQu9ylHYXzEXYfOCJEoxyDaSfau4/ZkLJZMout"],"alg":"RS256"}]} Затем Ангуляр/JSClient (на клиенте в смысле) проверять валидный ли был ответ от сервера в тот раз когда он нам Callback сделал и прислал какой-то Хеш. Для этого он берет этот Хеш из Callback и ключи шифрования который он получил по ссылке " http://localhost:44318/.well-known/openid-configuration/jwks" и что-то там проеверяет/вычисляет. если все прошло успешно то на клиенте (Ангуляр/JSClient ) у нас есть вычисленные: access_token: "549972f7f4bae1211c67f323d6615fbbb5fe8a9073aad5d1d87ed4773f3e07db" id_token: "eyJhbGciOiJSUzI1NiIsImtpZCI6IjA2RDNFNDZFOTEwNzNDNUQ0QkMyQzk5ODNCRTlGRjQ0OENGNjQwRDQiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJCdFBrYnBFSFBGMUx3c21ZTy1uX1JJejJRTlEifQ.eyJuYmYiOjE1MzI4MDQ0MDgsImV4cCI6MTUzMjgwNDQzOCwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMTgiLCJhdWQiOiJhbmd1bGFyY2xpZW50Iiwibm9uY2UiOiJOMC4wNzc5NDE5NjQxNzk5OTk0MzE1MzI4MDQ0MDg0OTEiLCJpYXQiOjE1MzI4MDQ0MDgsImF0X2hhc2giOiJMWlMtS3hUQTVMYXVXSl9lOGp0Q1JBIiwic2lkIjoiMWYzYjAzMDdlY2VkNzRiM2ZhMmI0MmVlNjJiMmZjODMiLCJzdWIiOiJhYWJhYWZmOC1mMmRlLTQ3YzEtYmRjZC02MzQxZjM1ZDA3ODciLCJhdXRoX3RpbWUiOjE1MzI4MDI2ODQsImlkcCI6ImxvY2FsIiwiYW1yIjpbInB3ZCJdfQ.TRp3GJfnWQhkglyKMGHKpJ1qQ1mXTYaLExOX8gJiQH3p7IVq7dMM-LzWir7bsG--sxHt4bvv-RawDfKese9uO2S9PpKRf-uc5Q3_PQe0qQ1t4uMsdDLL_mLtneJMey5SldSSeMxXfd3GXSw8GVyQDPanLmzEzjeUqX8gg8d6FIomCsFPdfoUg12P4QKJ-Yz0v-WDDxuVEfrm8r3RVUHxnyempDhhyQs8dDb5htXdlBKah1pahI0RCJojbdq-ozyMmI6X7Rt00LyKni7mRp6QDpkE3yecm0LROnjIjtKq0OuKhr5XOcuZNKWqk9H5XkkshEB-T5bjP0a2sV97MqUbyg" Все мы авторизировались есть токены которыми мы можем подписывать свой запрос, у нас есть доступ, все хорошо. Информацию о токене записали в store сессии браузера Теперь на клиенте нам интересно знать информацию о пользователе. Какие у него есть роли и т.д. Чтобы понимать какие части пользовательского интерфейса можно показывать, а какие не нужно. для этого надо обратиться на " http://localhost:5000/connect/userinfo" и подписаться в Headers headers = headers.set('Accept', 'application/json'); headers = headers.set( 'Authorization', 'Bearer ' + decodeURIComponent(token) на выходе имеем что-то типа такого: email:"admin@gmail.com" given_name:"admin@gmail.com" name:"admin@gmail.com" preferred_username:"admin@gmail.com" role:["admin", "dataEventRecords.user", "dataEventRecords", "securedFiles.user", "securedFiles"] scope:["dataEventRecords", "securedFiles"] sub:"aabaaff8-f2de-47c1-bdcd-6341f35d0787" Все. Это все касается способа AllowedGrantTypes = GrantTypes.Implicit, ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 00:32 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
ArpanxЗатем Ангуляр/JSClient (на клиенте в смысле) проверять валидный ли был ответ от сервера в тот раз когда он нам Callback сделал и прислал какой-то Хеш. Для этого он берет этот Хеш из Callback и ключи шифрования который он получил по ссылке Странно. Всё что я читал - все проверки на сервере. А "хеш" используется один раз и используется на сервере приложения. Зачем его в ангуляре хранить? o_O ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 00:42 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Агнец за бортом , я описал то что наблюдаю в рабочем примере. Логин/пароль, да проверят сам сервер и он решает пускать пользователя или не пускать. На клиенте вычисляются эти 2 или 3 токена (один токен на доступ, другой на refresh-токена, еще там один для чего-то ), т.е. сервер их не сообщает в открытом виде, клиент их из хеша сам добывает. В принципе хеш можно не хранить, токены хранят. Когда токен протухает, клиент сам молча на фоне делает рефреш. Если пользователь 1 раз авторизовался на сервере и остается там авторизованный, то клиент второй раз не заставляет его вводить логин/пароль, а сам молча добывает токены. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 00:53 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Агнец за бортомЭто и есть "личный кабинет", правильно? Управляем логином/паролем + отключаем/подключаем соцсети - типа самый минимум. userID - тот, что хранится в SSO и он "центральный". Это скорее управление параметрами аутентификации. Личный кабинет, это управление функциями сайта, применительно к профилю пользователя, об этом SSO ничего не знает, да и знать не должен. Ну, в общем где тебе хранить учётные записи, решай сам :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 01:13 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Агнец за бортомЯ правильно понимаю, что обычно юзают какой-то клиент (либу) на стороне service provider-a? Ему скармливаешь endPoints и сам клиент уже рулит всеми токенами, проверками на членство в ролях и т.п. Что у тебя service провайдер? Твой сервер с веб проектом prjMy или сервер аутентификации sso организации? Либа зависит от протокола и того как написана. Я юзал oisaml и там либа ставится перед всеми запросами. Фильтром. В web.xml я писал адрес idp сервера и адрес куда он редиректит юзверя от себя в твое приложение prjMy. Ты только решаешь в своем фильтре пускать или нет, т.к. с редиректом пришло что это Иванов Иван Иванович. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 07:24 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Агнец за бортомhVosttоднако управление аккаунтом (логин/пароль) перекидывает на SSO. Это и есть "личный кабинет", правильно? Управляем логином/паролем + отключаем/подключаем соцсети - типа самый минимум. userID - тот, что хранится в SSO и он "центральный".да. И кабинет не твой как бы, а кабинет sso. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 07:29 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Arpanx, +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 07:35 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
hVosttЛичный кабинет, это управление функциями сайта,тут непонятки, т.к. он назвал кабинетом формочку ввода пароля sso. Ну и хранилище логин пароль для формочки. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 07:38 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Petro123, Да не важно это :) К вопросу о том что где размещать, без постановки, условий задачи и прочее, обращаться рано. Ответ сам найдётся, когда человек разберётся, что ему в конце концов нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 08:13 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Petro123Что у тебя service провайдер? Service Provider - это web-приложение, которое отдает функционал аутентификации / авторизации серверу SSO. SSO - это сервер SSO Auth provider - это контакты / фейсбуки / гуглы и прочее. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 09:35 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Petro123тут непонятки, т.к. он назвал кабинетом формочку ввода пароля sso. Ну, как бы... Одно дело на сайте разместить кнопку "Логин VK", другое дело - дать юзеру привязывать к своему основному аккаунту разнообразные учетки. Если это не личный кабинет (пусть и на SSO) - тогда я не знаю, что такое личный кабинет. К тому же, SSO-сервер также "мой". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 09:38 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Агнец за бортомService Provider - это web-приложение, которое отдает функционал аутентификации / авторизациину, или твое веб приложение prjMy. www.host/prjMy OK Агнец за бортомЕсли это не личный кабинет (пусть и на SSO) - тогда я не знаю, что такое личный кабинет.можно конечно назвать. Можно назвать профилем как на sql.ru. это я больше ему писал. Кроме того, даже если sso сервер твой это все равно внешняя система. ОК. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 09:50 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
У меня вопрос по теме. Я правильно понимаю, что все эти токены - это всё о stateless? Секретная часть ключа (для валидации токенов) - она одна и та же всё время жизни сервера и не меняется? А по хорошему, наверное - она вообще прописана где-то навсегда должна быть? Типа - все credentials - гоняются между браузером и сервером приложения (в виде токена), и на сервере просто проверяется их подлинность, в виде секретного ключа? Сессий нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 10:23 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Агнец за бортомСессий нет?ты можешь сделать куками и / или вообще без токенов. У меня были сессии. Ну и протокол смотри. В SAML внутри XML ходила инфа. Это что больше ты любишь. Что тебе даст та сторона, смотри стандарт конкретного сервера. А у себя ты просто пропускаешь юзверя. Нафига токены? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 10:44 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
Petro123Нафига токены? Задача - аутентификация через соц. сети. Подзадача - сделать это через сервер SSO. Сервер SSO имеет у себя кучу разных плюшек/вариантов авторизации. Так что, наверное, имеет смысл. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 10:50 |
|
SSO - несколько вопросов.
|
|||
---|---|---|---|
#18+
И как правильней обновлять access token? Напрямую из ангуляра к SSO или через Service Provider? Ибо если мы говорим о stateless - получается - только из ангуляра. Если через service provider - тогда надо "мутить" сессии. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2018, 10:54 |
|
|
start [/forum/topic.php?fid=18&msg=39680824&tid=1355155]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 304ms |
total: | 474ms |
0 / 0 |