在Onelogin Openid重定向中的MFA之后获取UnauthorizedError

时间:2019-03-18 12:29:25

标签: php openid openid-connect oidc onelogin

我正在使用php(没有框架)测试概念证明。我想将Onelogin与OpenID连接流一起使用,以通过Onelogin确认现有用户的身份(已在Onelogin上进行设置),然后重定向到我的登录页面以完成该过程。我找不到类似的问题,所以我在这里。

使用https://developers.onelogin.com/openid-connect/api/authorization-code 我已经将OpenId Connect(OIDC)-> SSO->应用程序类型设置为Web,并将令牌端点设置为POST,设置了第一个api调用。 有了这个,我就可以顺利通过流程,一旦回到我的测试系统登录名即可。但这不会传递任何用户可识别的信息,因此我无法在数据库系统上确认该用户。

据我在这里的所有示例中所知,我正在登录Onelogin,并使用MFA可以。我的手机上装有Google Auth。一切看起来不错。然后,我可以确认我已通过测试用户登录到Onelogin。

测试用户没有特权,因为我的最终用户将仅使用Onelogin确认我最终系统上的身份。

因此,如果有人不关心在启动系统上确认用户,那么我认为这很好。但是我确实需要这样做,除非我错过了某些东西,否则我不能使用那种方式(网络)。

我似乎也能够使用此方法登录并重定向回我的测试系统登录名,但是如果我在收到UnauthorizedError之后不久再试一次。这使我想到先注销用户,但不注销,两次之间的注销都无效。

因此,我随后尝试将应用程序类型设置为本机,希望我们被重定向回我在应用程序中设置的重定向URL,但随后在MFA之后我仍然会收到UnauthorizedError,即使我似乎也无法通过在检查完角色,策略和应用设置之后。

我已经尝试了所有选项的令牌端点,但是在MFA之后仍然出现UnauthorizedError或登录到Onelogin,但是我没有重定向到在应用程序设置中设置的测试登录网址。

现在不知所措,需要帮助。

已编辑以添加-用户已添加到该应用中,我可以通过该应用和该用户进行确认。我也可以在用户的​​活动中看到它显示为“已登录Openid Connect(OIDC)”。因此,似乎我已登录,但仍收到UnauthorizedError 401。

2 个答案:

答案 0 :(得分:0)

首先执行身份验证,然后进行授权。因此,如果您正在向Onelogin OK进行身份验证,并且收到“未经授权”错误,则所有与您在Onelogin中配置的OIDC应用程序相同的事物都不会直接或通过Onelogin角色分配给用户。

因此,请检查您的应用程序。转到访问选项卡。查看应用分配给谁。确认测试用户已分配给该角色。或转到“用户”标签并检查是否已分配您的用户。

答案 1 :(得分:0)

@nial_atlasidentity中的评论正确。此处最可能的答案是您的用户未分配给您的OIDC应用程序。

分配了用户后,您将能够完成second part of the Auth Code Flow并从返回的id_token获取用户信息。您还可以使用返回的access_tokenUser Info Endpoint获取用户详细信息。

如果要测试流程并检查返回的令牌的内容,建议使用OIDC Inspector tool