Я использую Coldfusion 2021 и Okta. Моя страница входа успешно перенаправляется на страницу входа в Okta, где я могу войти. Когда меня перенаправляют обратно на перенаправление, я получаю одну из двух проблем в зависимости от того, как я его настроил.
Первые проблемы возникают, когда перенаправление — это та же страница, которая содержит тег cfoauth. Код выглядит следующим образом:
логин.cfm
<cfoauth
clientid = "xxxxxxxxxxx" scope = "openid profile" authendpoint = "https://loginurl/oauth2/authorize"
secretkey = "xxxxxxxxxxx" state = "test" accesstokenendpoint = "https://mydomain/accesstoken.cfm"
redirecturi = "https://mydomain/login.cfm" result = "res">
<cfscript>
session.auth= res;
writeDump(session);
<cfscript>
В этом случае я получаю следующую ошибку: Failure! Ensure that you have provided valid data for attributes. Просмотр исключения.log на сервере не дает никакой дополнительной информации, кроме номера строки тега cfoauth.
Вторая проблема возникает, когда перенаправление не совпадает с той страницей, которая содержит вызов cfoauth. В этом случае код выглядит следующим образом:
логин.cfm
<cfoauth
clientid = "xxxxxxxxxxx" scope = "openid profile" authendpoint = "https://loginurl/oauth2/authorize"
secretkey = "xxxxxxxxxxx" state = "test" accesstokenendpoint = "https://mydomain/accesstoken.cfm"
redirecturi = "https://mydomain/index.cfm" result = "res">
<cfscript>
session.auth= res;
<cfscript>
index.cfm
<cfscript>
writeDump(session);
</cfscript>
Я не могу видеть или редактировать сторону Okta, поэтому не могу предоставить эту информацию здесь, но предполагаю, что она настроена правильно, поскольку я могу войти в систему, и она перенаправляет меня обратно на перенаправление, как и ожидалось. Кажется, в документации указано, что перенаправление должно быть той же страницей, на которой есть тег, но в любом случае я не уверен, что не так.

В итоге я решил эту проблему, поэтому, если кому-то это понадобится, моей проблемой была конечная точка моего токена доступа. В моем случае я решил эту проблему, используя следующий тег cfoauth. Это должна была быть конечная точка токена доступа, предоставленная Okta, с перенаправлением, установленным на тот же uri, который содержал тег cfoauth.
<cfoauth clientid = "xxxxxxxxxxx" scope = "openid profile" authendpoint = "https://loginurl/oauth2/authorize" secretkey = "xxxxxxxxxxx" state = "test" accesstokenendpoint = "https://loginurl/oauth2/authorize" redirecturi = "https://mydomain/login.cfm" result = "res">