Azure active directory 为什么可以';我不能在Azure功能需要身份验证时访问它吗?

Azure active directory 为什么可以';我不能在Azure功能需要身份验证时访问它吗?,azure-active-directory,postman,azure-functions,Azure Active Directory,Postman,Azure Functions,(我为这个问题的长度道歉;我想说得透彻。) 我是Azure新手,正在尝试设置一个需要身份验证的“无服务器”API。我有一个函数,当身份验证未启用时(基本上只是Node.js中的“Hello,world”),该函数可以正确运行。但是,当我启用身份验证时,我得到的唯一响应是: You do not have permission to view this directory or page. 要启用身份验证,请执行以下操作: 转到Azure门户中的Azure Active Directory 转到

(我为这个问题的长度道歉;我想说得透彻。)

我是Azure新手,正在尝试设置一个需要身份验证的“无服务器”API。我有一个函数,当身份验证未启用时(基本上只是Node.js中的“Hello,world”),该函数可以正确运行。但是,当我启用身份验证时,我得到的唯一响应是:

You do not have permission to view this directory or page.
要启用身份验证,请执行以下操作:

  • 转到Azure门户中的Azure Active Directory
  • 转到应用程序注册
  • 为“我的功能”应用程序创建了新注册
  • 添加了
    https://.azurewebsites.net/.auth/login/microsoftaccount/callback
  • 为我的应用程序创建了新的客户端密码
  • 从仪表板转到我的应用程序,选择“平台功能”选项卡,然后单击“身份验证/授权”
  • 已启用“应用程序服务身份验证”
  • 已使用上述注册的应用程序ID和客户端密码配置Microsoft身份验证提供程序
  • 将“请求未通过身份验证时要采取的操作”设置为“使用Microsoft帐户登录”
  • 此时,如果没有身份验证,我将无法再访问API端点(如预期的那样)。然后,我将邮递员配置为通过以下方式获取令牌:

  • 选择授权选项卡
  • 将类型设置为“OAuth 2.0”
  • 单击“获取新访问令牌”
  • 设置以下值:
    • 授权类型:授权代码
    • 回调URL:
      https://.azurewebsites.net/.auth/login/microsoftaccount/callback
      (与我在上面输入的应用程序注册相同)
    • 验证URL:
      https://login.microsoftonline.com//oauth2/authorize?resource= 据我所知,有效载荷看起来是合理的:

      {
        "aud": "<Application (client) ID>",
        "iss": "https://login.microsoftonline.com/<Directory (tentant) ID>/v2.0",
        "iat": 1558488698,
        "nbf": 1558488698,
        "exp": 1558492598,
        "aio": "<base64? data>",
        "azp": "<Application (client) ID>",
        "azpacr": "1",
        "idp": "live.com",
        "name": "Ben Blank",
        "oid": "<a GUID I don't recognize>",
        "preferred_username": "ben.blank@gmail.com",
        "scp": "User.Read",
        "sub": "<base64? data>",
        "tid": "<Directory (tentant) ID>",
        "uti": "<base64? data>",
        "ver": "2.0"
      }
      
      {
      “澳元”:“,
      “国际空间站”:https://login.microsoftonline.com//v2.0",
      “iat”:1558488698,
      “nbf”:1558488698,
      “经验”:1558492598,
      “扣押入息令”:“,
      “azp”:“,
      “阿兹帕克”:“1”,
      “idp”:“live.com”,
      “姓名”:“本·布兰克”,
      
      “oid”:"你需要在AAD中将Postman注册为客户端应用程序,并授予它调用你的API的权限,类似于,只是你将授予它访问你的API的权限,而不是链接中的AAD图。你的Postman需要配置为使用该应用程序的客户端id和密码来获取令牌。现在你正在使用Postman请求你的AP我将应用程序配置为获取自身的访问令牌。很可能您的应用程序未在AAD中配置为调用自身!(无论如何都没有意义)。

      您正在使用Microsoft帐户作为身份验证提供程序。获取访问令牌的方式与Azure Active Directory有关,而不是与之相关

      当您访问函数url时,您将重定向到登录页面。您将发现url为
      https://login.live.com/oauth20_authorize.srf?
      。输入正确的凭证后,您将能够访问您的功能


      在那篇文章之后,我为邮递员创建了第二个注册,但我不知道如何添加对我的API的访问;在“我的API”上没有显示任何内容选项卡和其他选项卡仅显示Microsoft API。在该选项卡的顶部,应该有一个选项来选择“我的组织使用的API”和“我的API”。选择前者并输入您的API的名称以找到它。如果您使用的是旧版应用程序注册选项卡,请在选择API中输入您的API的名称-然后应该列出它。它不会显示在那里,eit她,即使在按名称搜索时也是如此。这没有任何意义。如果您已使用AAD应用程序注册刀片注册了API,并且您成功地为其定义了机密(意味着您将其定义为机密客户端),则它应该作为您的邮递员(或任何其他客户端)的潜在目标API可见。您是否看到您可能已在同一租户(而非MS API)中注册的任何其他web应用程序?如果没有,您可能必须打开一张支持票证。您是要使用Microsoft帐户还是Azure Active Directory帐户登录?@TonyJu我想使用任何Microsoft帐户登录,但管理员总是告诉我要通过AAD登录。这没关系,但请记住选择“任何组织目录中的帐户和个人Microsoft帐户”(如Skype、Xbox、Outlook.com)作为支持的帐户类型,如果您在中创建应用程序AAD@TonyJu是的!我确信这一点。一定要点击帮助你的帖子上的“标记为答案”,并投票认为它是有帮助的,这对其他社区成员是有益的。