【问题标题】:Mozilla Django OpenID Logout does not revoke tokenMozilla Django OpenID 注销不会撤销令牌
【发布时间】:2021-06-26 18:11:35
【问题描述】:

我一直在努力将 django 应用程序与 mozilla-django-oidc 集成,但我似乎无法弄清楚如何正确注销。 在我的主页上,我有

<form action="{% url 'oidc_logout' %}" method="post">
{% csrf_token %}
<input type="submit" value="logout">

假设用户已登录,它会提供注销。登录似乎工作得很好。 在我的设置中,我提供了注销配置

OIDC_OP_LOGOUT_ENDPOINT = cfgs.get("LOGOUT_ENDPOINT")
OIDC_OP_LOGOUT_METHOD = "test_app_2.openid.logout"    
LOGOUT_REDIRECT_URL = reverse('post-logout')
POST_LOGOUT_URL = cfgs.get("LOGOUT_REDIRECT")

这是我的 okta oidc 注销端点,我编写的用于创建正确注销 url 和注销重定向的方法。我创建了一个 POST_LOGOUT_URL 变量,这样我就可以在其他地方访问注销后的 url。

openid.logout 看起来像这样

def logout(request):
    id_token = str(request.COOKIES['csrftoken'])

    logout_request = \
        f'{settings.OIDC_OP_LOGOUT_ENDPOINT}?id_token_hint={id_token}' \
        f'&post_logout_redirect_uri={settings.POST_LOGOUT_URL}'    

return logout_request

哪个是 oidc 的正确注销 url 配置。我已经通过烧瓶应用程序测试了所有这些,并且一切正常。为什么我不直接使用烧瓶?说来话长。我宁愿使用 Django...

在我的views.py中我有

class LogoutView(OIDCLogoutView):      
    def get(self, request):
        return self.post(request)

我承认是从另一个帖子中获取的,但我不完全确定它如何与我的网址一起使用:

urlpatterns = [
    path('', views.index, name='index'),
    path('login/', views.login, name='login'),
    path('post_logout/', views.post_logout, name='post-logout'),
    path('logout/', views.LogoutView.as_view(), name='logout'),
    path('main_page/', views.main_page, name='main-page'),
]

所以我不完全确定它在 OIDC_OP_LOGOUT_METHOD

的上下文中是如何工作的

所以这(错误地)似乎有效。它直接跳转到我的 post_logout 页面,但据我所知,它永远不会执行重定向到实际的 okta 注销 url。果然,实际上没有任何东西被注销。我的应用程序会话似乎认为我已注销,因为我可以返回主页并显示我已注销。但是,如果我单击登录,则不必通过 okta 身份验证。它仍在保留 okta 会话。

所以我的问题是如何让它真正遵循 OIDC_OP_LOGOUT_METHOD 的流程。我知道我的配置不正确,但是通过他们的文档,我能够遵循的关于该主题的指导帮助很少。

提前谢谢你!

【问题讨论】:

    标签: django openid-connect okta


    【解决方案1】:

    所以我把它整理出来了。 从导入的 url 调用注销,所以我不需要指定不同的注销 url。我删除了它,它仍然没有工作。

    但是 OIDC_OP_LOGOUT_METHOD 是不正确的。它必须是 OIDC_OP_LOGOUT_URL_METHOD

    这让一切正常。

    哎呀...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 2021-07-05
      • 2021-02-09
      • 2018-09-21
      • 2015-12-08
      • 1970-01-01
      • 2022-07-05
      相关资源
      最近更新 更多