随着Microsoft不赞成他们的支持,我开始将Live SDK注册的应用程序迁移到新的Application Registration Portal。
我进入了Azure门户中的“应用程序注册(预览)”页面,并选择创建一个新应用程序。
然后,我转到我的功能应用程序的Authentication / Authorization
页上,以放置新注册的AAD应用程序的信息。
我的客户端iOS应用程序先从这些端点获取authorization code
,然后再获取有效的access token
:
https://login.microsoftonline.com/<tenantId>/oauth2/v2.0/authorize
https://login.microsoftonline.com/<tenantId>/oauth2/v2.0/token
手握access token
,iOS应用程序正在尝试POST
在AAD端点(/.auth/login/aad
)上的令牌,但失败。
但是,如果我使用Google帐户获得了authorization code
和access token
,然后将POST
access token
移至/.auth/login/google
端点,它会成功。
问题
当客户端在401 Unauthorized
端点上发布access token
时,为什么EasyAuth返回/.auth/login/aad
状态?
更新
我现在可以从此令牌端点https://login.microsoftonline.com/<tenantId>/oauth2/v2.0/token
检索访问令牌,并使用Insomnia
/ Postman
来POST
使用以下对象{{ 1}}到application/json
端点:
/.auth/login/aad
我得到的回复是带有以下消息的{
"access_token": "eY...."
}
:
401 Unauthorized
我正在按照与Google帐户完全相同的程序进行操作。我还确保我注册的应用程序允许我的Azure Active Directory中的用户以及个人帐户。这是这些设置的屏幕截图:
答案 0 :(得分:2)
简短答案:您应该使用“ Azure Active Directory”身份验证提供程序,然后在两个位置A,您的功能应用程序和B)Azure AD应用程序注册中正确配置详细信息。
详细步骤
我尝试通过应用程序注册(预览)通过应用程序注册创建简单的Azure AD身份验证Azure函数。这是我遵循的详细步骤。
A)您的功能应用程序的配置步骤
在Azure门户中,导航到您的Function App>平台功能>身份验证/授权
从身份验证提供程序中选择“ Azure Active Directory”。在配置页面上,选择“高级”作为管理模式。
ClientID-从您的Azure AD应用程序注册中获取应用程序ID
IssuerURL-https://sts.windows.net/<your Azure AD Tenant ID>/
允许令牌受众-https://<yourfunctionappname>.azurewebsites.net/.auth/login/aad/callback
客户端密钥(可选)-仅与Web应用程序相关。再次从Azure AD应用程序注册中选择密钥/秘密值。
B)Azure AD应用程序注册的配置步骤
导航到Azure AD>应用程序注册(预览)>您现有的应用程序注册>概述>
点击重定向URI,然后添加我们在上面的“允许令牌受众”中添加的值。
https://<yourfunctionappname>.azurewebsites.net/.auth/login/aad/callback
导航到Azure AD>应用程序注册(预览)>您现有的应用程序注册>清单>编辑和设置
"oauth2AllowIdTokenImplicitFlow": true
答案 1 :(得分:2)
您应该选择Azure Active Directory作为提供程序,而不是Microsoft。然后,将“管理模式”选择为“高级”,并添加已注册应用程序的应用程序ID。
这里有一篇很好的博客文章,解释了该过程:https://www.c-sharpcorner.com/article/secure-azure-function-with-azure-ad/
另请参阅:Azure Function authentication using Azure Active Directory