Django 微软广告认证

问题描述

我注意到这个问题重复了几次,但是,从所有资源来看,我仍然无法使其正常工作。

我只是想在我的 Django 应用程序中使用 Azure Active Directory 身份验证。 我正在使用 this 模块,并且按照文档中的说明配置了所有内容

问题是 - 我不知道用户应该在哪里输入凭据 - 因为该模块只有 一个网址('auth-callback/')。我不知道如何跳转到 Microsoft 登录 html 页面。我应该使用我的 login.html 还是?

另外,我猜'auth-callback/' url 显然是一个回调 URL,它出现在登录页面之后。

我使用 django auth.views LoginView 进行登录,并使用自定义 login.html 页面

重定向 URI 而言,我将重定向 URI 配置为直接匹配“http://localhost:8000/microsoft/auth-callback/” url,我猜这也是它需要的方式。

主要问题是 - 我在哪里可以输入登录凭据? :)

此外,当我尝试此操作时 - 我在管理员登录页面上收到无效凭据错误

Start site and go to /admin and logout if you are logged in.
Login as Microsoft/Office 365/XBox Live user. It will fail. This will automatically create your new user.
Login as a Password user with access to change user accounts.

快速编辑:

我注意到,当我进入控制台内的 django/admin 页面“..../admin/login”时出现此错误

https://static/microsoft/css/login.css Failed to load resource (404)
https://static/microsoft/js/login.js Failed to load resource (404)

我在哪里可以获得这些文件

让我们跳到我的代码

  1. settings.py
INSTALLED_APPS = [
    ...
    'django.contrib.sites','microsoft_auth',...
]

#Choped from templates
'context_processors': [
                ...
                'microsoft_auth.context_processors.microsoft',],AUTHENTICATION_BACKENDS = [
    'microsoft_auth.backends.MicrosoftAuthenticationBackend','django.contrib.auth.backends.ModelBackend',]


SITE_ID = 1


LOGIN_REDIRECT_URL = 'main:index'
logoUT_REDIRECT_URL = 'main:index'

LOGIN_URL = '/'
logoUT_URL = '/'

# AZURE AUTH CONfig
MICROSOFT_AUTH_CLIENT_ID = 'THIS IS MY CLIENT KEY'
MICROSOFT_AUTH_CLIENT_SECRET = 'THIS IS MY SECRET KEY'
MICROSOFT_AUTH_TENANT_ID = 'THIS IS MY TENANT KEY'

# include Microsoft Accounts,Office 365 Enterpirse and Azure AD accounts
MICROSOFT_AUTH_LOGIN_TYPE = 'ma'

还有我的 urls.py

...
    path('microsoft/',include('microsoft_auth.urls',namespace='microsoft')),...

先谢谢大家。

解决方法

django-microsoft-auth 使用标准的 django 登录页面并对其进行扩展。我的猜测是您的自定义登录页面会干扰它。您可以尝试删除该视图并再次测试以查看登录名是否出现在 /admin 中。

文件应该来自 django-microsoft-auth 包。您可以尝试使用 pip 卸载并重新安装它