Azure Microsoft Bot-验证公开的API终结点(IDX10205:颁发者验证失败)

Azure Microsoft Bot-验证公开的API终结点(IDX10205:颁发者验证失败),azure,authentication,authorization,botframework,Azure,Authentication,Authorization,Botframework,试图通过Microsoft Team Bot将身份验证/授权添加到公开的终结点。 机器人部署在Azure上;到目前为止一切正常 它公开了两个端点: /api/messages:这用作机器人URL /api/notify:这是我要添加身份验证和授权的端点 上下文:Bot正在公开/api/notify,因此外部服务将在此调用,使Bot将活动发送到公共频道 Azure总体配置 Bot频道注册链接到Active Directory上已注册的应用程序。此注册应用具有永不过期的秘密。src代码本身使用此

试图通过Microsoft Team Bot将身份验证/授权添加到公开的终结点。
机器人部署在Azure上;到目前为止一切正常

它公开了两个端点:

  • /api/messages
    :这用作机器人URL
  • /api/notify
    :这是我要添加身份验证和授权的端点
上下文:Bot正在公开
/api/notify
,因此外部服务将在此调用,使Bot将活动发送到公共频道

Azure总体配置 Bot频道注册链接到Active Directory上已注册的应用程序。此注册应用具有永不过期的秘密。src代码本身使用此
applicationId
secretId

我试过的
  • 应用程序服务>身份验证:在Azure Active Directory上进行应用程序服务身份验证/登录
    • ClientId:applicationId
    • 发卡机构URL:
      https://login.microsoftonline.com/{tenantId}
  • 身份验证选项卡:我添加了一个Web平台:
    • https://{my service}.azurewebsites.net/.auth/login/aad/callback
  • 支持的帐户类型:任何组织目录中的帐户(任何Azure AD目录-多租户)
  • 启用隐式授权流>开放ID令牌

  • 不确定是否需要“公开API”并将bot服务的基本URL设置为应用程序URI(https://{my service}.azurewebsites.net)

  • 我不确定是否需要在Active Directory中注册第二个应用程序,并有一个元组:“bot-app”/“authentication provider”,然后重新考虑整个过程
最后,我希望外部服务使用一对“clientId/clientSecret”进行身份验证,并向{my service}.azurewebsites.net/api/notify发出HTTP请求

  • 无令牌->401
  • 有效令牌->确定
问题 使用此配置,如果我(例如)打开仿真器并使用原始的
applicationId+secret
凭据,则bot将停止自身身份验证,发送到
/api/消息的初始POST将接收:

{
  "value": {
    "code": 401,
    "message": "IDX10205: Issuer validation failed. Issuer: '[PII is hidden]'. Did not match: validationParameters.ValidIssuer: ..."
  }
}

如果您试图在调用Web API时进行身份验证,我认为您需要类似这样的内容来演示“如何使用Passport.js库使用Azure AD B2C保护Node.js Web API”。您在上面使用的方法更多的是在用户积极使用bot时登录用户(即,向用户显示登录提示,单击该提示并启动身份验证过程)。@StevenKanberg谢谢:)