Azure AD B2C 的 mozilla-django-oidc 问题
mozilla-django-oidc issue with Azure AD B2C
我正在尝试在 Django 中配置 "mozilla-django-oidc" 包。为了进行身份验证,我使用 Azure Active Directory B2C 策略,所以这是我的联合服务器。
当我点击登录按钮时,我得到了这个 URL,这对我来说是错误的,为了方便起见,我将把它分开:
在主页我有这个代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home page</title>
</head>
<body>
<h3>
Welcome to home page
</h3>
{% if user.is_authenticated %}
<p>Current user: {{ user.email }}</p>
<form action="{% url 'oidc_logout' %}" method="post">
<input type="submit" value="logout">
</form>
{% else %}
<a href="{% url 'oidc_authentication_init' %}">Login</a>
{% endif %}
</body>
我的代码在settings.py
OIDC_RP_SIGN_ALGO = "RS256"
OIDC_RP_CLIENT_ID = "xxxxxxxxxxxxxx" #fake client id just for this post
# OIDC_RP_CLIENT_SECRET = os.environ['OIDC_RP_CLIENT_SECRET']
OIDC_OP_AUTHORIZATION_ENDPOINT =
"https://TENANTID.b2clogin.com/TENANTID.onmicrosoft.com/oauth2/v2.0/authorize?
p=b2c_1_TENANTID_signin"
OIDC_OP_TOKEN_ENDPOINT = "https://TENANTID.b2clogin.com/TENANTID.onmicrosoft.com/oauth2/v2.0/token?
p=b2c_1_TENANTID_signin"
# OIDC_OP_USER_ENDPOINT = "<URL of the OIDC OP userinfo endpoint>"
LOGIN_REDIRECT_URL = "http://localhost:8000/oidc/callback/"
LOGOUT_REDIRECT_URL = "http://localhost:8000/welcome/
注意:
我不知道在这个变量 "OIDC_RP_CLIENT_SECRET" 和 "OIDC_OP_USER_ENDPOINT"
中放什么
请帮忙在这个配置中获得正确的URL?
谢谢
我必须更新库中的 views.py 文件才能获得我需要的 URL。
文档很差,但至少可以用。
为了得到你想要的URL,你需要删除端点中的授权参数:
OIDC_OP_AUTHORIZATION_ENDPOINT
OIDC_OP_TOKEN_ENDPOINT
这将为您生成新的端点,如下所示。
OIDC_OP_AUTHORIZATION_ENDPOINT = "https://TENANTID.b2clogin.com/TENANTID.onmicrosoft.com/oauth2/v2.0/authorize"
OIDC_OP_TOKEN_ENDPOINT = "https://TENANTID.b2clogin.com/TENANTID.onmicrosoft.com/oauth2/v2.0/token"
现在您缺少 URL 的一部分,因此您可以使用以下代码重新添加“策略”授权参数:
OIDC_AUTH_REQUEST_EXTRA_PARAMS = {'p': 'b2c_1_TENANTID_signin'}
OIDC_RP_SCOPES = ['openid']
您可以使用 OIDC_USE_NONCE = False
而不是将 nonce
设置为 defaultNonce
吗?
编辑:我应该提到这并不能解决您关于 response_type
和 nonce
的问题。
我正在尝试在 Django 中配置 "mozilla-django-oidc" 包。为了进行身份验证,我使用 Azure Active Directory B2C 策略,所以这是我的联合服务器。
当我点击登录按钮时,我得到了这个 URL,这对我来说是错误的,为了方便起见,我将把它分开:
在主页我有这个代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home page</title>
</head>
<body>
<h3>
Welcome to home page
</h3>
{% if user.is_authenticated %}
<p>Current user: {{ user.email }}</p>
<form action="{% url 'oidc_logout' %}" method="post">
<input type="submit" value="logout">
</form>
{% else %}
<a href="{% url 'oidc_authentication_init' %}">Login</a>
{% endif %}
</body>
我的代码在settings.py
OIDC_RP_SIGN_ALGO = "RS256"
OIDC_RP_CLIENT_ID = "xxxxxxxxxxxxxx" #fake client id just for this post
# OIDC_RP_CLIENT_SECRET = os.environ['OIDC_RP_CLIENT_SECRET']
OIDC_OP_AUTHORIZATION_ENDPOINT =
"https://TENANTID.b2clogin.com/TENANTID.onmicrosoft.com/oauth2/v2.0/authorize?
p=b2c_1_TENANTID_signin"
OIDC_OP_TOKEN_ENDPOINT = "https://TENANTID.b2clogin.com/TENANTID.onmicrosoft.com/oauth2/v2.0/token?
p=b2c_1_TENANTID_signin"
# OIDC_OP_USER_ENDPOINT = "<URL of the OIDC OP userinfo endpoint>"
LOGIN_REDIRECT_URL = "http://localhost:8000/oidc/callback/"
LOGOUT_REDIRECT_URL = "http://localhost:8000/welcome/
注意: 我不知道在这个变量 "OIDC_RP_CLIENT_SECRET" 和 "OIDC_OP_USER_ENDPOINT"
中放什么请帮忙在这个配置中获得正确的URL? 谢谢
我必须更新库中的 views.py 文件才能获得我需要的 URL。 文档很差,但至少可以用。
为了得到你想要的URL,你需要删除端点中的授权参数:
OIDC_OP_AUTHORIZATION_ENDPOINT
OIDC_OP_TOKEN_ENDPOINT
这将为您生成新的端点,如下所示。
OIDC_OP_AUTHORIZATION_ENDPOINT = "https://TENANTID.b2clogin.com/TENANTID.onmicrosoft.com/oauth2/v2.0/authorize"
OIDC_OP_TOKEN_ENDPOINT = "https://TENANTID.b2clogin.com/TENANTID.onmicrosoft.com/oauth2/v2.0/token"
现在您缺少 URL 的一部分,因此您可以使用以下代码重新添加“策略”授权参数:
OIDC_AUTH_REQUEST_EXTRA_PARAMS = {'p': 'b2c_1_TENANTID_signin'}
OIDC_RP_SCOPES = ['openid']
您可以使用 OIDC_USE_NONCE = False
而不是将 nonce
设置为 defaultNonce
吗?
编辑:我应该提到这并不能解决您关于 response_type
和 nonce
的问题。