我正在尝试在允许处理请求之前向我的 Azure 函数应用程序添加身份验证。
为了避免手动处理标记化,我尝试为我的函数应用程序配置身份提供者。
我目前所做的工作: 使用以下配置创建了一个应用程序注册:
认证页面:
API 权限:
公开 API
身份提供者
问题:
当我尝试测试或运行我的函数时,我收到 401 未授权错误。我期望身份提供者自动处理身份验证。但是,当我单击默认域时,它不会请求授权。相反,会打开一个新窗口,其中包含以下屏幕:
其他观察结果:
如果我手动导航到https://func-myfunc-01.azurewebsites.net/.auth/login/aad/callback
,身份验证将有效,并且我将会成功获得授权。
我的目标:
我希望在访问函数 URL 之前提示用户进行身份验证。通过身份验证后,他们应该能够执行该函数。
我做错了什么?任何指导都将不胜感激。
谢谢!
身份验证和授权彼此不同。为我们的 Azure 函数实例添加身份提供程序为我们提供了一种保护函数端点的简单方法。
认证需要先登录才能访问受保护的资源,所以需要设置重定向(http 302 执行 URL 重定向);而授权始终要求请求头中存在有效的访问令牌,并且会返回 401 错误来表示没有令牌或令牌无效,或返回 403 错误代码来表示令牌有效但访问权限不足。
OP 确认,在为 Azure 功能添加身份提供者时选择 302 重定向而不是 401 可以解决他的问题。