Azure WebAPI,它是否需要id标记或访问令牌作为承载?

时间:2018-02-04 05:50:33

标签: azure azure-active-directory azure-functions

直到最近,我必须在没有意识到的情况下破坏某些东西。

当试图通过邮递员调用azure函数时,我得到以下结果:

enter image description here

传入的承载令牌肯定是正确(或者至少我认为我没有改变任何事情)。我基本上遵循指南here,我在那里建了一个网址:

  

https://login.windows.net/[tenant_id]/oauth2/authorize?response_type=code+id_token&redirect_uri=https://localhost:8080/&client_id=[client_id]&scope=openid+profile+email&response_mode=fragment&state=redir%3D%252Fapi%252FGetGolfers&nonce=dbaee60794b948c58f27c068611528e1_20170909014932“;

我完全失去了为什么这不起作用,因为它肯定在昨晚工作,我检查以确保应用程序ID /租户ID也正确几次。不确定天蓝色广告突然发生了什么......

编辑:

所以我刚刚完成了这里的说明:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code

我能够获取代码并通过发布请求进入舞台,并提供以下内容:

  

{“access_token”:   “eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1THdqcHdBSk9NOW4tQSJ9.eyJhdWQiOiJodHRwczovL3NlcnZpY2UuY29udG9zby5jb20vIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvN2ZlODE0NDctZGE1Ny00Mzg1LWJlY2ItNmRlNTdmMjE0NzdlLyIsImlhdCI6MTM4ODQ0MDg2MywibmJmIjoxMzg4NDQwODYzLCJleHAiOjEzODg0NDQ3NjMsInZlciI6IjEuMCIsInRpZCI6IjdmZTgxNDQ3LWRhNTctNDM4NS1iZWNiLTZkZTU3ZjIxNDc3ZSIsIm9pZCI6IjY4Mzg5YWUyLTYyZmEtNGIxOC05MWZlLTUzZGQxMDlkNzRmNSIsInVwbiI6ImZyYW5rbUBjb250b3NvLmNvbSIsInVuaXF1ZV9uYW1lIjoiZnJhbmttQGNvbnRvc​​28uY29tIiwic3ViIjoiZGVOcUlqOUlPRTlQV0pXYkhzZnRYdDJFYWJQVmwwQ2o4UUFtZWZSTFY5OCIsImZhbWlseV9uYW1lIjoiTWlsbGVyIiwiZ2l2ZW5fbmFtZSI6IkZyYW5rIiwiYXBwaWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctODkwYS0yNzRhNzJhNzMwOWUiLCJhcHBpZGFjciI6IjAiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJhY3IiOiIxIn0.JZw8jC0gptZxVC-7l5sFkdnJgP3_tRjeQEPgUn28XctVe3QqmheLZw7QVZDPCyGycDWBaqy7FLpSekET_BftDkewRhyHk9FW_KeEz0ch2c3i08NGNDbr6XYGVayNuSesYk5Aw_p3ICRlUV1bqEwk-Jkzs9EEkQg4hbefqJS6yS1HoV_2EsEhpd_wCQpxK89WPs3hLYZETRJtG5kvCCEOvSHXmDE6eT HGTnEgsIk - UlPe275Dvou4gEAwLofhLDQbMSjnlV5VLsjimNBVcSRFShoxmQwBJR_b2011Y5IuD6St5zPnzruBbZYkGNurQK63TJPWmRd3mbJsGM0mf3CUQ”   “token_type”:“Bearer”,“expires_in”:“3600”,“expires_on”:   “1388444763”,“资源”:“https://service.contoso.com/”,
  “refresh_token”:   “AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4rTfgV29ghDOHRc2B-C_hHeJaJICqjZ3mY2b_YNqmf9SoAylD1PycGCB90xzZeEDg6oBzOIPfYsbDWNf621pKo2Q3GGTHYlmNfwoc-OlrxK69hkha2CF12azM_NYhgO668yfcUl4VBbiSHZyd1NVZG5QTIOcbObu3qnLutbpadZGAxqjIbMkQ2bQS09fTrjMBtDE3D6kSMIodpCecoANon9b0LATkpitimVCrl-NyfN3oyG4ZCWu18M9-vEou4Sq-1oMDzExgAf61noxzkNiaTecM-Ve5cq6wHqYQjfV9DOz4lbceuYCAA”   “scope”:“https%3A%2F%2Fgraph.microsoft.com%2Fmail.read”,

  “id_token”:   “eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctODkwYS0yNzRhNzJhNzMwOWUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83ZmU4MTQ0Ny1kYTU3LTQzODUtYmVjYi02ZGU1N2YyMTQ3N2UvIiwiaWF0IjoxMzg4NDQwODYzLCJuYmYiOjEzODg0NDA4NjMsImV4cCI6MTM4ODQ0NDc2MywidmVyIjoiMS4wIiwidGlkIjoiN2ZlODE0NDctZGE1Ny00Mzg1LWJlY2ItNmRlNTdmMjE0NzdlIiwib2lkIjoiNjgzODlhZTItNjJmYS00YjE4LTkxZmUtNTNkZDEwOWQ3NGY1IiwidXBuIjoiZnJhbmttQGNvbnRvc​​28uY29tIiwidW5pcXVlX25hbWUiOiJmc​​mFua21AY29udG9zby5jb20iLCJzdWIiOiJKV3ZZZENXUGhobHBTMVpzZjd5WVV4U2hVd3RVbTV5elBtd18talgzZkhZIiwiZmFtaWx5X25hbWUiOiJNaWxsZXIiLCJnaXZlbl9uYW1lIjoiRnJhbmsifQ。”   }

文档声称'access_token'可用于webapi调用(作为持有者),但它们对我不起作用,但是id_token被用作持有者呢!

发生了什么事?我觉得我正在失去理智。

1 个答案:

答案 0 :(得分:1)

  

我设置为受保护,我希望从Azure AD登录用户   能够调用azure函数。

这种情况是您可以通过AAD protect访问功能应用程序资源。它与功能中的创建Open API定义不同。

对于您的场景,如果您只是想使用AAD来保护您的功能并通过AAD Oauth授权流程直接访问它,您需要按照您在问题中发布的指南进行操作。

这是因为Azure AAD的流量。请求的响应类型为code+id_token。所以,这是原因。您必须从端点请求codeid_token,并使用id_token进行授权。

此流程适用于Azure本身。本文档中的其他协议适用于开发人员。这意味着这些协议适用于您在AAD中注册的应用程序。