在 Azure 应用服务身份验证与身份验证(经典)中重定向以使用 AAD 登录
Posted
技术标签:
【中文标题】在 Azure 应用服务身份验证与身份验证(经典)中重定向以使用 AAD 登录【英文标题】:Redirect to login with AAD in Azure App Service Authentication vs Authentication (Classic) 【发布时间】:2021-08-24 23:21:38 【问题描述】:我正在尝试设置一个系统,其中 Azure DataFactory 可以通过其托管标识调用 Azure 函数。很好的例子:Authorising Azure Function App Http endpoint from Data Factory
但是,这是使用用于 Azure 功能的旧(er)身份验证/授权工具,现在已重命名为身份验证(经典)。通过这个设置系统很好,我可以拨打电话并得到响应,但是升级到授权会导致这个中断。似乎缺少的关键是“请求未通过身份验证时采取的操作”选项,我似乎无法使用新的授权工具进行设置,但应设置为“使用 Azure AD 登录”
总之,我如何使用新的授权工具设置此设置,以便 MSI 可以对该功能进行冷却并通过 AAD 进行身份验证。
经典图片
具有新授权的图像(无法重定向到 AAD)
总之,我如何使用新的授权工具设置此设置,以便 MSI 可以对该功能进行冷却并通过 AAD 进行身份验证。
【问题讨论】:
这里可能有两种身份验证方法:委托(登录流程)和应用程序(后端服务流程)。对于您的场景,客户端凭据(后端服务)是最佳选择。 【参考方案1】:要使其与新的 Authentication
一起使用,请按照以下步骤操作。
1.在门户中编辑Authentication settings
或在创建应用时进行如下设置。
2.编辑Identity provider
,确保Issuer URL
是https://sts.windows.net/<tenant-id>
(没有/v2.0
)并且Allowed token audiences
包括App ID URI
。
App ID URI
,你可以在你的函数应用的AD App中查看->Expose an API
,如果你之前使用旧的Authentication
,可能是你的函数应用URL,没关系,只是确保 Allowed token audiences
包含它。
3.然后在datafactory web Activity中,还要确保资源是App ID URI
。
然后就可以正常使用了。
更新:
你可以参考我的配置。
功能应用:
广告应用:
AD 应用清单:
"id": "xxxxxx",
"acceptMappedClaims": null,
"accessTokenAcceptedVersion": null,
"addIns": [],
"allowPublicClient": null,
"appId": "xxxxx",
"appRoles": [],
"oauth2AllowUrlPathMatching": false,
"createdDateTime": "2021-06-08T01:51:06Z",
"disabledByMicrosoftStatus": null,
"groupMembershipClaims": null,
"identifierUris": [
"api://xxxxx"
],
"informationalUrls":
"termsOfService": null,
"support": null,
"privacy": null,
"marketing": null
,
"keyCredentials": [],
"knownClientApplications": [],
"logoUrl": null,
"logoutUrl": null,
"name": "joyfuna2",
"oauth2AllowIdTokenImplicitFlow": true,
"oauth2AllowImplicitFlow": false,
"oauth2Permissions": [
"adminConsentDescription": "Allow the application to access joyfuna2 on behalf of the signed-in user.",
"adminConsentDisplayName": "Access joyfuna2",
"id": "1704f162-421d-4733-855f-5d93c0c55689",
"isEnabled": true,
"lang": null,
"origin": "Application",
"type": "User",
"userConsentDescription": "Allow the application to access joyfuna2 on your behalf.",
"userConsentDisplayName": "Access joyfuna2",
"value": "user_impersonation"
],
"oauth2RequirePostResponse": false,
"optionalClaims": null,
"orgRestrictions": [],
"parentalControlSettings":
"countriesBlockedForMinors": [],
"legalAgeGroupRule": "Allow"
,
"passwordCredentials": [
"customKeyIdentifier": null,
"endDate": "2031-06-08T01:51:05.573Z",
"keyId": "c6d4434f-7aaf-4c4c-9428-a38cbf8200bb",
"startDate": "2021-06-08T01:51:05.573Z",
"value": null,
"createdOn": "2021-06-08T01:51:07.3876164Z",
"hint": "UT_",
"displayName": "Generated by App Service"
],
"preAuthorizedApplications": [],
"publisherDomain": "xxxxxx.onmicrosoft.com",
"replyUrlsWithType": [
"url": "https://joyfuna2.azurewebsites.net/.auth/login/aad/callback",
"type": "Web"
],
"requiredResourceAccess": [
"resourceAppId": "00000003-0000-0000-c000-000000000000",
"resourceAccess": [
"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"type": "Scope"
]
],
"samlMetadataUrl": null,
"signInUrl": "https://joyfuna2.azurewebsites.net",
"signInAudience": "AzureADMyOrg",
"tags": [],
"tokenEncryptionKeyId": null
Datafactory 网络活动:
【讨论】:
嗨乔伊,感谢您的回复。不幸的是,这仍然不起作用,我在 ADF 中遇到错误,提示“观众验证失败,观众不匹配”。我已将参数设置为您建议的参数,包括在颁发者 URL 中删除 v2.0。是否有任何其他设置可能导致此问题? @Aegir 您是否使用其他任何东西来保护您的功能,例如APIM ? 不,它只是一个使用 Azure 提供的 HttpTrigger 模板的基本 Python 函数。通过浏览器调用可以让我得到响应。身份提供者设置: ID 提供者:MS。支持的帐户类型:当前租户-单租户颁发者 URL:sts.windows.net/<tenant_ID> 允许的令牌受众:api:// ADF 身份是否需要在 RG 上具有任何其他 RBAC 角色?似乎不太可能,但目前愿意尝试任何事情 好的,全新的应用服务似乎可以工作了。也许这是从经典升级到新的过程中的一个问题,或者是我不小心调整的其他问题。非常感谢您的时间和帮助,我很感激以上是关于在 Azure 应用服务身份验证与身份验证(经典)中重定向以使用 AAD 登录的主要内容,如果未能解决你的问题,请参考以下文章
无法让 OpenID 身份验证与 Onelogin 和 Azure Web 应用程序一起使用