#javascript #azure #authentication #single-sign-on #cypress
#javascript #azure #аутентификация #единый вход #cypress
Вопрос:
Я настраиваю новые тесты cypress для тестирования некоторых функций в приложении Dynamics 365. Но у меня осталось окно браузера с URL https://login.microsoftonline.com /__/ и текст УПС, нет теста для запуска.
describe('Initial Cypress Tests', () => {
it('navigate to D365', () => {
cy.visit('https://wipropoc.crm8.dynamics.com')
})
})
Ответ №1:
Я бы посоветовал вам напрямую выполнить вызов POST для получения токена аутентификации единого входа и запустить cy.visit('https://wipropoc.crm8.dynamics.com')
с полученным токеном.
Вот шаги, которые следует выполнить из официальной документации,
- Войдите в систему, когда аутентификация выполнена на стороннем сервере.
- Разбирайте токены с помощью
cy.request()
. - Вручную установите токены в локальном хранилище.
- Сопоставьте внешние хосты и укажите на локальные серверы.
cy.request('POST', 'https://sso.corp.com/auth', { username: 'foo', password: 'bar' })
.then((response) => {
// pull out the location redirect
const loc = response.headers['Location']
// parse out the token from the url (assuming its in there)
const token = parseOutMyToken(loc)
// do something with the token that your web application expects
// likely the same behavior as what your SSO does under the hood
// assuming it handles query string tokens like this
cy.visit('http://localhost:8080?token=' token)
// if you don't need to work with the token you can sometimes
// just visit the location header directly
cy.visit(loc)
})
Подробнее об этом можно прочитать здесь — https://docs.cypress.io/guides/guides/web-security.html#Form-Submission-Redirects
Пример в реальном времени — https://xebia.com/blog/how-to-use-azure-ad-single-sign-on-with-cypress