使用mod_auth_openidc

时间:2019-06-11 07:29:24

标签: mod-auth-openidc

在mod_auth_openidc中是否可以做 提示=没有尝试使用已登录用户的凭据访问受保护的网站,但如果没有,则回退到允许未经身份验证的访问吗?

我经营的网站无需任何身份验证即可公开访问,但也为登录的用户提供其他可选功能。我想使用mod_auth_openidc允许用户登录,但如果我使用该模块保护我的页面, ,它会在访问页面之前强制进行登录(如您所愿),并且如果我不保护自己的页面,那么即使我已经登录,我也看不到OIDC变量。

因此,您将转到该网站并查看主页。在该页面上是一个登录按钮。登录后,您仍然位于主页上,但是现在您看到了更多的内容(例如个性化的欢迎消息)。

到目前为止,我唯一的解决方案是使我的整个网站可以使用两个不同的URL,一个受openidc保护,另一个不可用。登录时,您将被重定向到另一个站点。但这可能会使用户以及希望配置baseURL的服务器端软件产生混淆。

我可以通过其他方式很容易地实现此目的,但是我找不到基于mod_auth_openidc模块的解决方案。

我尝试过:

<Location /example/public>
   AuthType openid-connect
</Location>
<Location /example/protected/>
   AuthType openid-connect
   Require valid-user
</Location>

我希望会发生的是进入/ example / protected需要我登录(确实如此),然后再回到/ example / public仍会知道我已登录。但是,尽管/ example / protected可以正常工作(因此我的基本设置是正确的),/ example / public根本不起作用-没有设置变量,因此我仍然没有登录。

也许有一个可以满足我需要的Require选项,或者其他一些明确的答案?

1 个答案:

答案 0 :(得分:0)

您需要使用OIDCUnAuthAction pass,请参见:https://github.com/zmartzone/mod_auth_openidc/commit/6890b13c481f12debbd7c65a79e9dc5197deb794

# Defines the action to be taken when an unauthenticated request is made.
# "auth" means that the user is redirected to the OpenID Connect Provider or Discovery page.
# "401" means that HTTP 401 Unauthorized is returned.
# "410" means that HTTP 410 Gone is returned
# "pass" means that an unauthenticated request will pass but claims will still be passed when a user happens to be authenticated already
# Useful in Location/Directory/Proxy path contexts that serve AJAX/Javascript calls and for "anonymous access"
# When not defined the default "auth" is used.
#OIDCUnAuthAction [auth|pass|401|410]