AngularJS + OpenID Connect
-
- Уже с Приветом
- Posts: 10604
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
AngularJS + OpenID Connect
Уважаемые,
Имеем SPA приложение, написано на AngularJS (важно. На старинном AngularJS). Кастомер хочет, чтобы это приложение использовало Single Sign On и в качестве Identity Provider использовало Okta. В самой Окте нам сказали, что для этого нужно использовать OpenID Connect. Перерыл кучу инфы и не нашел как это сделать. Для более продвинутого Angular примеры есть, а вот для AngularJS нет ничего.
Можете кто уже делал подобное ?
Имеем SPA приложение, написано на AngularJS (важно. На старинном AngularJS). Кастомер хочет, чтобы это приложение использовало Single Sign On и в качестве Identity Provider использовало Okta. В самой Окте нам сказали, что для этого нужно использовать OpenID Connect. Перерыл кучу инфы и не нашел как это сделать. Для более продвинутого Angular примеры есть, а вот для AngularJS нет ничего.
Можете кто уже делал подобное ?
-
- Уже с Приветом
- Posts: 576
- Joined: 07 Jan 2016 13:04
Re: AngularJS + OpenID Connect
Кучу раз делал. Если вы в AWS, то прописываете в ALB параметры вашего идентити провайдера и при запросе АЛБ будет смотреть на то, есть ли у вас токен:
1) если да, то верифицирует внутри себя и пропустит
2) если нет, то редиректнет к идентити провайдеру, который после успешного логина редиректнет пользователя взад
На чем у вас написан фронт — это вообще значения не имеет. Это задача админов/девопсов. Если у вас вместо AWS ALB стоит Nginx, то тогда или плагин если не про, или стандартными средствами, если про.
В сети полно пошаговых мануалов.
Сорри за сумбур, пишу на ходу.
1) если да, то верифицирует внутри себя и пропустит
2) если нет, то редиректнет к идентити провайдеру, который после успешного логина редиректнет пользователя взад
На чем у вас написан фронт — это вообще значения не имеет. Это задача админов/девопсов. Если у вас вместо AWS ALB стоит Nginx, то тогда или плагин если не про, или стандартными средствами, если про.
В сети полно пошаговых мануалов.
Сорри за сумбур, пишу на ходу.
-
- Уже с Приветом
- Posts: 10604
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: AngularJS + OpenID Connect
Спасибо, но все равно непонятно немного. Мне нужно знать, как в реализовать OpenID Connect в самом коде (в AngularJS) ну или если есть какая нибудь библиотека для этого. AWS тут как бы не причем. Причем требование чтобы был реализован Authorization with PKCE workflow.
МЫ вроде нашли компонент под названием PlusAuth
https://github.com/PlusAuth/oidc-client-js
Но затыка происходит на моменте, когда Identity Provider возвращает authorization code. Следующим шагом по идее должно быть обращение к token endpoint в сторону IDentity Provider'a но вот никак..
МЫ вроде нашли компонент под названием PlusAuth
https://github.com/PlusAuth/oidc-client-js
Но затыка происходит на моменте, когда Identity Provider возвращает authorization code. Следующим шагом по идее должно быть обращение к token endpoint в сторону IDentity Provider'a но вот никак..
-
- Уже с Приветом
- Posts: 576
- Joined: 07 Jan 2016 13:04
Re: AngularJS + OpenID Connect
В ангуларе никак. Он тут вообще не при чем. При попытке получить доступ к ресурсу (.html, .js, .css, etc.) прокси проверяет наличие токена. Если токена нет, то пользователь редиректится (302) к идентити провайдеру, который уже показывает ему форму с логином и паролем, MFA и любыми дополнительными проверками. Если пользователю удалось доказать, что он тот за кого себя выдаёт, то его редиректит обратно (302), но уже с токеном, прокси проверяет токен и пропускает его дальше. После этого пользователь выкачивает в браузер ассеты хоть на ангуларе, хоть на реакте.
Короче, если пользователь пытается получить доступ к ресурсам, которые требуют аутентификацию, а ее нет, то его просто редиректит к тому сервису, который знает как проверять пользователей. Т.е. логин/пароль запрашиваете не вы, а другой сервис. Вам просто надо настроить прокси, который знает про этот другой сервис.
Короче, если пользователь пытается получить доступ к ресурсам, которые требуют аутентификацию, а ее нет, то его просто редиректит к тому сервису, который знает как проверять пользователей. Т.е. логин/пароль запрашиваете не вы, а другой сервис. Вам просто надо настроить прокси, который знает про этот другой сервис.
-
- Уже с Приветом
- Posts: 3008
- Joined: 28 Feb 2013 03:18
- Location: NY
Re: AngularJS + OpenID Connect
Я делала, но для нового ангуляра, используя эту библиотеку: https://github.com/okta/okta-auth-js.
Вроде старый она тоже поддерживает. Вот какой-то пример: https://phpflow.com/misc/angular/okta-a ... avascript/
Вроде старый она тоже поддерживает. Вот какой-то пример: https://phpflow.com/misc/angular/okta-a ... avascript/
-
- Уже с Приветом
- Posts: 10604
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: AngularJS + OpenID Connect
BronenosezPotemkin wrote: ↑22 Apr 2023 01:54 Я делала, но для нового ангуляра, используя эту библиотеку: https://github.com/okta/okta-auth-js.
Вроде старый она тоже поддерживает. Вот какой-то пример: https://phpflow.com/misc/angular/okta-a ... avascript/
Для нового Ангуляра то проблем быть не должно. Вроде у Окты есть там поддержка. А вот для старого AngularJS ни хрена. Мы вот пока пытаемся прикрутить этот PlusAuth, но пока трудно идет.
-
- Уже с Приветом
- Posts: 10604
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: AngularJS + OpenID Connect
Да мы знаем в теории как работает OpenID Connect. Причем тут прокси ? У нас есть наше приложение, кототорое сейчас работает со стандартным Forms authentication. Кастомер сказал, что никакого Forms auth больше не будет, все логины по все приложения будут идти через один логин - через Окта. То есть в Окте будет создано приложение для нашего приложения, нам будет выдан issuer URL, Client ID и другие параметры. Все. Дальше мы уже сами должны будем обеспечить работу нашего приложения через Open ID Connect, получать в итоге ID Token и уже работать с ним. Никакой прокси тут не поможет.tessob wrote: ↑21 Apr 2023 14:49 В ангуларе никак. Он тут вообще не при чем. При попытке получить доступ к ресурсу (.html, .js, .css, etc.) прокси проверяет наличие токена. Если токена нет, то пользователь редиректится (302) к идентити провайдеру, который уже показывает ему форму с логином и паролем, MFA и любыми дополнительными проверками. Если пользователю удалось доказать, что он тот за кого себя выдаёт, то его редиректит обратно (302), но уже с токеном, прокси проверяет токен и пропускает его дальше. После этого пользователь выкачивает в браузер ассеты хоть на ангуларе, хоть на реакте.
Короче, если пользователь пытается получить доступ к ресурсам, которые требуют аутентификацию, а ее нет, то его просто редиректит к тому сервису, который знает как проверять пользователей. Т.е. логин/пароль запрашиваете не вы, а другой сервис. Вам просто надо настроить прокси, который знает про этот другой сервис.
Для других технологий (Angular, .NET, Java, PHP) у Окты есть компоненты готовые. Для AngularJS нет. AngularJS был выпущен в 2010м году. OpenID Connect - в 2014м.
-
- Уже с Приветом
- Posts: 3008
- Joined: 28 Feb 2013 03:18
- Location: NY
Re: AngularJS + OpenID Connect
Эта библиотека okta-auth-js, в принципе, универсальная для любого javascript. Вы пример посмотрели, там как раз anguarjs?shadow7256 wrote: ↑22 Apr 2023 02:06BronenosezPotemkin wrote: ↑22 Apr 2023 01:54 Я делала, но для нового ангуляра, используя эту библиотеку: https://github.com/okta/okta-auth-js.
Вроде старый она тоже поддерживает. Вот какой-то пример: https://phpflow.com/misc/angular/okta-a ... avascript/
Для нового Ангуляра то проблем быть не должно. Вроде у Окты есть там поддержка. А вот для старого AngularJS ни хрена. Мы вот пока пытаемся прикрутить этот PlusAuth, но пока трудно идет.
-
- Уже с Приветом
- Posts: 576
- Joined: 07 Jan 2016 13:04
Re: AngularJS + OpenID Connect
Прокси при том, что это та часть схемы, которая либо проксирует запрос, либо нет, в зависимости от наличия токена. Использование библиотек во фронте -- это просто абсурд, т.к. как все, что вы там на аутентифицирете вы в итоге отправите на публичные незащищенные API. Т.е. обход вашей безопасности сможет сделать любая QA-макака просто по неосторожности, например посмотрев на вкладку network в хроме. У вас же весь код всех ваших фронтовых библиотек выполняется в браузере злоумышленника. Если API защищенные, то тогда не понятно, что вы собираетесь изображать во фронте.shadow7256 wrote: ↑22 Apr 2023 02:11 Да мы знаем в теории как работает OpenID Connect. Причем тут прокси ?
-
- Уже с Приветом
- Posts: 10604
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: AngularJS + OpenID Connect
Мы наверное говорим о разных вещах Нам нужна authentication, а не authorization. Мы заменяем Forms authentication, при котором данные пользователя хранятся в aspnetdb базе данных, на Single Sign On механизм, при котором в качестве Identity Provider выступает Okta. У пользователя стоят куча разных приложений и во все эти приложения он логинится используя один и тот же логин.tessob wrote: ↑22 Apr 2023 10:17Прокси при том, что это та часть схемы, которая либо проксирует запрос, либо нет, в зависимости от наличия токена. Использование библиотек во фронте -- это просто абсурд, т.к. как все, что вы там на аутентифицирете вы в итоге отправите на публичные незащищенные API. Т.е. обход вашей безопасности сможет сделать любая QA-макака просто по неосторожности, например посмотрев на вкладку network в хроме. У вас же весь код всех ваших фронтовых библиотек выполняется в браузере злоумышленника. Если API защищенные, то тогда не понятно, что вы собираетесь изображать во фронте.shadow7256 wrote: ↑22 Apr 2023 02:11 Да мы знаем в теории как работает OpenID Connect. Причем тут прокси ?
-
- Уже с Приветом
- Posts: 576
- Joined: 07 Jan 2016 13:04
Re: AngularJS + OpenID Connect
Я про authentication и говорю. Если вы там во фронте что-то там аутентифицируете, то как об этом узнает бек?shadow7256 wrote: ↑22 Apr 2023 13:26 Мы наверное говорим о разных вещах Нам нужна authentication, а не authorization. Мы заменяем Forms authentication, при котором данные пользователя хранятся в aspnetdb базе данных, на Single Sign On механизм, при котором в качестве Identity Provider выступает Okta. У пользователя стоят куча разных приложений и во все эти приложения он логинится используя один и тот же логин.
-
- Уже с Приветом
- Posts: 10604
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: AngularJS + OpenID Connect
мы гоняем JWT в каждом запросе, но это уже другая история. Данная история имеет конкретную цель - как использовать AngularJS и Okta.tessob wrote: ↑22 Apr 2023 13:55Я про authentication и говорю. Если вы там во фронте что-то там аутентифицируете, то как об этом узнает бек?shadow7256 wrote: ↑22 Apr 2023 13:26 Мы наверное говорим о разных вещах Нам нужна authentication, а не authorization. Мы заменяем Forms authentication, при котором данные пользователя хранятся в aspnetdb базе данных, на Single Sign On механизм, при котором в качестве Identity Provider выступает Okta. У пользователя стоят куча разных приложений и во все эти приложения он логинится используя один и тот же логин.
-
- Уже с Приветом
- Posts: 10604
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: AngularJS + OpenID Connect
Я скинул ссылку девелоперу, который над этим работает. Спасибо, он посмотрит.BronenosezPotemkin wrote: ↑22 Apr 2023 04:50Эта библиотека okta-auth-js, в принципе, универсальная для любого javascript. Вы пример посмотрели, там как раз anguarjs?shadow7256 wrote: ↑22 Apr 2023 02:06BronenosezPotemkin wrote: ↑22 Apr 2023 01:54 Я делала, но для нового ангуляра, используя эту библиотеку: https://github.com/okta/okta-auth-js.
Вроде старый она тоже поддерживает. Вот какой-то пример: https://phpflow.com/misc/angular/okta-a ... avascript/
Для нового Ангуляра то проблем быть не должно. Вроде у Окты есть там поддержка. А вот для старого AngularJS ни хрена. Мы вот пока пытаемся прикрутить этот PlusAuth, но пока трудно идет.
-
- Уже с Приветом
- Posts: 5382
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
Re: AngularJS + OpenID Connect
Неспешно у вас разработка идет ... Вопрос 5го Апреля, дев. посмотрит 22го.
-
- Уже с Приветом
- Posts: 10604
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: AngularJS + OpenID Connect
мы переключились на Okta-auth-js библиотеку, но все равно проблема осталась.BronenosezPotemkin wrote: ↑22 Apr 2023 01:54 Я делала, но для нового ангуляра, используя эту библиотеку: https://github.com/okta/okta-auth-js.
Вроде старый она тоже поддерживает. Вот какой-то пример: https://phpflow.com/misc/angular/okta-a ... avascript/
Запрос уходит на authorization endpoint на Okta и срабатывает callback и мы получаем authorization code назад. Но по идее теперь нужно сделать второй запрос на token endpoint и передать этот aothorization code чтобы в ответ получить ID token. Но вот как сделать этот второй запрос мы пока понятия не имеем
-
- Уже с Приветом
- Posts: 5382
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
Re: AngularJS + OpenID Connect
Там по второму линку в коде это есть. Не работает?
Code: Select all
Promise.all([
authClient.tokenManager.get('idToken')
])
.then(([idTokenObject]) => {
localStorage.setItem("username", idTokenObject['claims']['name']);
$scope.username = localStorage.getItem("username");
console.log($scope.username);
//return authClient.token.getUserInfo(accessTokenObject, idTokenObject);
});
-
- Уже с Приветом
- Posts: 10604
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: AngularJS + OpenID Connect
Эта часть кода у нас почему то не срабатывает Вторая ветка там где вызывается signInWithRedirect срабывает, мы получаем страницу с логином от Окты, логинимся и Окта нас возвращает обратно, но вот дальше по идее библиотека должна сама запросить ID token у Окты.. но почему то не идет..наверное что то не то с routing мы делаемKVA wrote: ↑05 May 2023 01:16 Там по второму линку в коде это есть. Не работает?
Code: Select all
Promise.all([ authClient.tokenManager.get('idToken') ]) .then(([idTokenObject]) => { localStorage.setItem("username", idTokenObject['claims']['name']); $scope.username = localStorage.getItem("username"); console.log($scope.username); //return authClient.token.getUserInfo(accessTokenObject, idTokenObject); });
-
- Уже с Приветом
- Posts: 5382
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
Re: AngularJS + OpenID Connect
Ну так побегать по javascript и посмотреть что она там делает внутри? Все же как на ладони должно быть.
-
- Уже с Приветом
- Posts: 10526
- Joined: 04 Feb 2004 14:14
- Location: Edgewater, NJ
Re: AngularJS + OpenID Connect
Я делал лет 5 назад такое. Но на веб-приложении написанном на ASP.Net как раз с использованием AngularJS. У них есть удобная функциональнасть для перехвата все запросов к серверу с проверкой если токены для аутенфикации присутствуют, если нет, то тогда редирект можно запрограммировать по стандартам open auth на сервер с процессом логина (настраивается в web.config ). То есть проверка наличия аутентификации идет на сервере. Если токена нет, то он сам ответ дают в браузер пользователя на редиретк в Окту. Окта потом обратно делает редирект уже с токеном после аутентификации. В самом javascript ничего делать не нужно было. То есть AngularJS как бы и нипричем был.shadow7256 wrote: ↑05 Apr 2023 20:53 Уважаемые,
Имеем SPA приложение, написано на AngularJS (важно. На старинном AngularJS). Кастомер хочет, чтобы это приложение использовало Single Sign On и в качестве Identity Provider использовало Okta. В самой Окте нам сказали, что для этого нужно использовать OpenID Connect. Перерыл кучу инфы и не нашел как это сделать. Для более продвинутого Angular примеры есть, а вот для AngularJS нет ничего.
Можете кто уже делал подобное ?
Я не знаю как там в Sap работает. Наверняка, что-то похожее есть. Найдите где этот ивент можно перехватить, а проверить токены и сделать редирект на сайт провайдера юзеров сделать самому. Это возможно, даже если вручную запрограммировать.
Помню вся эта байда работала с МС сервисами и с Октой. Могла и работать с фейсбуковскими паролями по этому стандарту.
-
- Уже с Приветом
- Posts: 10604
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: AngularJS + OpenID Connect
по иронии судьбы мы именно так и сделали с другим нашим приложением. У нас еще одно есть SPA приложение (сделано на backbone.js). Кастомер тоже сказал, чтобы это приложение работало через SAML.IvanGrozniy wrote: ↑05 May 2023 16:58Я делал лет 5 назад такое. Но на веб-приложении написанном на ASP.Net как раз с использованием AngularJS. У них есть удобная функциональнасть для перехвата все запросов к серверу с проверкой если токены для аутенфикации присутствуют, если нет, то тогда редирект можно запрограммировать по стандартам open auth на сервер с процессом логина (настраивается в web.config ). То есть проверка наличия аутентификации идет на сервере. Если токена нет, то он сам ответ дают в браузер пользователя на редиретк в Окту. Окта потом обратно делает редирект уже с токеном после аутентификации. В самом javascript ничего делать не нужно было. То есть AngularJS как бы и нипричем был.shadow7256 wrote: ↑05 Apr 2023 20:53 Уважаемые,
Имеем SPA приложение, написано на AngularJS (важно. На старинном AngularJS). Кастомер хочет, чтобы это приложение использовало Single Sign On и в качестве Identity Provider использовало Okta. В самой Окте нам сказали, что для этого нужно использовать OpenID Connect. Перерыл кучу инфы и не нашел как это сделать. Для более продвинутого Angular примеры есть, а вот для AngularJS нет ничего.
Можете кто уже делал подобное ?
Я не знаю как там в Sap работает. Наверняка, что-то похожее есть. Найдите где этот ивент можно перехватить, а проверить токены и сделать редирект на сайт провайдера юзеров сделать самому. Это возможно, даже если вручную запрограммировать.
Помню вся эта байда работала с МС сервисами и с Октой. Могла и работать с фейсбуковскими паролями по этому стандарту.
ОДин наш дев (который уже ушел от нас) создал простое ASP.NET MVC приложение (как обертка), в которое и засунул этот SPA. Создали простой View в котором есть <div> куда передается Okta username и в этом же View грузится само SPA, которое на ран тайме считывает из Дива информацию готовую уже. Вроде все получилось.
НО вот с этим AngularJS так не получается..
-
- Уже с Приветом
- Posts: 3008
- Joined: 28 Feb 2013 03:18
- Location: NY
Re: AngularJS + OpenID Connect
Может, неправильный redirectUri? Выдаётся какая-то ошибка? Обычно в можно её увидеть в самом url или в консоле. Вы используете pkce flow? Если нет, надо в конфиге поставить false:shadow7256 wrote: ↑04 May 2023 16:21 мы переключились на Okta-auth-js библиотеку, но все равно проблема осталась.
Запрос уходит на authorization endpoint на Okta и срабатывает callback и мы получаем authorization code назад. Но по идее теперь нужно сделать второй запрос на token endpoint и передать этот aothorization code чтобы в ответ получить ID token. Но вот как сделать этот второй запрос мы пока понятия не имеем
Code: Select all
To use the authorization_code flow, set responseType to "code" and pkce to false:
var config = {
// Required config
issuer: 'https://{yourOktaDomain}/oauth2/default',
clientId: 'GHtf9iJdr60A9IYrR0jw',
redirectUri: 'https://acme.com/oauth2/callback/home',
// Use authorization_code flow
responseType: 'code',
pkce: false
};
-
- Уже с Приветом
- Posts: 10604
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: AngularJS + OpenID Connect
Да, мы используем PKCE, таково требование Окты. Redirect URL стоит такой - https://localhost:9700. Так как указано в примере с okta-auth-js. Редирект от Окты обратно идет и выглядити так:
https://localhost:9700/?code=asdfas7097 ... gdfgt45453
то есть Okta authorizatiton endpoint вернула нам обратно authorization code и по идее Okta-auth-js библиотека должна потом отправить этот code на token endpoint в Окту и получить ID token и оттуда вытащить username. Но никакого запроса на token endpoint не идет.. видно что то мы не так делаем с этой okta-auth-js
https://localhost:9700/?code=asdfas7097 ... gdfgt45453
то есть Okta authorizatiton endpoint вернула нам обратно authorization code и по идее Okta-auth-js библиотека должна потом отправить этот code на token endpoint в Окту и получить ID token и оттуда вытащить username. Но никакого запроса на token endpoint не идет.. видно что то мы не так делаем с этой okta-auth-js
-
- Уже с Приветом
- Posts: 3008
- Joined: 28 Feb 2013 03:18
- Location: NY
Re: AngularJS + OpenID Connect
Тогда вам, я думаю, не нужно использовать signInWithRedirect , у вас получается вот этот случай:shadow7256 wrote: ↑06 May 2023 03:11 Да, мы используем PKCE, таково требование Окты. Redirect URL стоит такой - https://localhost:9700. Так как указано в примере с okta-auth-js. Редирект от Окты обратно идет и выглядити так:
https://localhost:9700/?code=asdfas7097 ... gdfgt45453
то есть Okta authorizatiton endpoint вернула нам обратно authorization code и по идее Okta-auth-js библиотека должна потом отправить этот code на token endpoint в Окту и получить ID token и оттуда вытащить username. Но никакого запроса на token endpoint не идет.. видно что то мы не так делаем с этой okta-auth-js
Code: Select all
Handling the callback without routing
Most applications will handle an OAuth callback using a special route/page, separate from the signin page. However some SPA applications have no routing logic and will want to handle everything in a single page.
Create / configure your auth-js instance
Before starting the OktaAuth service, or making any other API calls with auth-js , call token.isLoginRedirect - if this returns true, call token.parseFromUrl and save tokens using tokenManager.setTokens. It’s important that no other app logic runs until the async parseFromUrl / token manager logic is complete
After this, continue normal app logic.
Code: Select all
async function main() {
// create OktaAuth instance
var config = {
issuer: 'https://{yourOktaDomain}/oauth2/default',
clientId: 'XXXX',
redirectUri: 'appurl',
};
authClient = new OktaAuth(config);
// Subscribe to authState change event.
authClient.authStateManager.subscribe(function(authState) {
// Logic based on authState is done here.
if (!authState.isAuthenticated) {
// render unathenticated view
return;
}
// Render authenticated view
});
// Handle callback
if (authClient.token.isLoginRedirect()) {
const { tokens } = await authClient.token.parseFromUrl(); // remember to "await" this async call
authClient.tokenManager.setTokens(tokens);
}
// normal app startup
authClient.start(); // will update auth state and call event listeners
}
-
- Уже с Приветом
- Posts: 3008
- Joined: 28 Feb 2013 03:18
- Location: NY
Re: AngularJS + OpenID Connect
Code: Select all
if (authClient.isLoginRedirect()) {
const { tokens } = await authClient.token.parseFromUrl(); // remember to "await" this async call
authClient.tokenManager.setTokens(tokens);
} else{
Promise.all([
authClient.tokenManager.get('idToken')
]).then(([idTokenObject]) => {
if (!idTokenObject) {
authClient.token.getWithRedirect();
}
});
}
tokenManager сам запишет token в localStorage. Тот phpflow пример выглядит устаревшим.
-
- Уже с Приветом
- Posts: 10526
- Joined: 04 Feb 2004 14:14
- Location: Edgewater, NJ
Re: AngularJS + OpenID Connect
Юзер нэйм при правильном подходе внедрения в OpenAuth никуда передаваться не должен насколько я помню. В этом-то вся и фишка - не гонять чувствительную информацию по интернету. Юзер нейм и пароль сама Окта решит, спрашивать человечка или так доверить, по старой итентификации, айпи и т.д. Потом окта генерит токен базируяс на этой инфе и редиректит обратно в ваше приложения. Тогда она и может включить юзер нейм в токен, если настроить. Задача вашего приложения редирет сделать в окту при отсутствии токена (сгенерировать ответ кода 302 на запрос какой-нибудь странички без токена) и принять редирект обратно с токеном. Там еще детали есть, что это токен прийдется проверить по правилам.shadow7256 wrote: ↑05 May 2023 21:33по иронии судьбы мы именно так и сделали с другим нашим приложением. У нас еще одно есть SPA приложение (сделано на backbone.js). Кастомер тоже сказал, чтобы это приложение работало через SAML.IvanGrozniy wrote: ↑05 May 2023 16:58Я делал лет 5 назад такое. Но на веб-приложении написанном на ASP.Net как раз с использованием AngularJS. У них есть удобная функциональнасть для перехвата все запросов к серверу с проверкой если токены для аутенфикации присутствуют, если нет, то тогда редирект можно запрограммировать по стандартам open auth на сервер с процессом логина (настраивается в web.config ). То есть проверка наличия аутентификации идет на сервере. Если токена нет, то он сам ответ дают в браузер пользователя на редиретк в Окту. Окта потом обратно делает редирект уже с токеном после аутентификации. В самом javascript ничего делать не нужно было. То есть AngularJS как бы и нипричем был.shadow7256 wrote: ↑05 Apr 2023 20:53 Уважаемые,
Имеем SPA приложение, написано на AngularJS (важно. На старинном AngularJS). Кастомер хочет, чтобы это приложение использовало Single Sign On и в качестве Identity Provider использовало Okta. В самой Окте нам сказали, что для этого нужно использовать OpenID Connect. Перерыл кучу инфы и не нашел как это сделать. Для более продвинутого Angular примеры есть, а вот для AngularJS нет ничего.
Можете кто уже делал подобное ?
Я не знаю как там в Sap работает. Наверняка, что-то похожее есть. Найдите где этот ивент можно перехватить, а проверить токены и сделать редирект на сайт провайдера юзеров сделать самому. Это возможно, даже если вручную запрограммировать.
Помню вся эта байда работала с МС сервисами и с Октой. Могла и работать с фейсбуковскими паролями по этому стандарту.
ОДин наш дев (который уже ушел от нас) создал простое ASP.NET MVC приложение (как обертка), в которое и засунул этот SPA. Создали простой View в котором есть <div> куда передается Okta username и в этом же View грузится само SPA, которое на ран тайме считывает из Дива информацию готовую уже. Вроде все получилось.
НО вот с этим AngularJS так не получается..
Повторюсь - при правильном подходе аутентификация целиком делается на серверной части! На C#, например. JavaScript вообще не нужен для этого. Соотвественно, AngularJS вообще не нужно трогать.
Но это сложная тема. Я потратил на изучение OpenAuth и полное внедрение пару месяцев. Также из моего личного опыта - объяснение как это работает другим программистам тоже неявная задача. Если программист не в теме и начинает этим заниматься и спрашивает вопросы у внедривших такую систему, то примерно пару недель занимает, чтобы чел хоть что-то начинал понимать.