我试图通过使用curl使用oAuth 2.0调用windows Azure AD租户应用程序的身份验证过程。但是我不知道下面示例代码中的参数"resource"是什么:
curl -X POST https://login.windows.net/<<YOUR--AD-TENANT-ID>>/oauth2/token
-F redirect_uri=http://google.com
-F grant_type=authorization_code
**-F resource=https://management.core.windows.net/ **
-F client_id=87a544fd-...
-F code=AwABAAAAvPM1...8sSAA
Resource参数描述客户端代表用户访问的WebAPI的标识符。OAuth中的大多数流涉及4方,资源所有者(又名用户)、客户端(又名应用程序)、授权机构(又名身份提供者)和资源(又名webapi)。授权机构生成的访问令牌的受众是资源标识符。
在Azure AD的情况下,您可以使用客户端ID或资源WebAPI的应用程序ID URI(在Azure管理门户的Azure AD应用程序的配置选项卡中找到它们)。例如,如果我想让我的客户端获得一个令牌来代表用户访问Azure AD Graph API,我会请求资源"https://graph.windows.net"的令牌。在您的示例中,资源参数值标识Azure服务管理api。
下面是一些客户端应用程序使用Azure AD sdk向webapi请求令牌的代码示例-资源参数的不同用法:
- 移动应用程序调用WebAPI: http://msdn.microsoft.com/en-us/library/azure/dn646737.aspx#BKMK_Native
- Web应用程序调用WebAPI: http://msdn.microsoft.com/en-us/library/azure/dn646737.aspx#BKMK_AppToAPI
- 客户端调用图形API: http://msdn.microsoft.com/en-us/library/azure/dn646737.aspx#BKMK_Graph
简单来说,资源参数包含您想要访问的Web API资源的URI。
OAuth协议遵循基于令牌的对资源的访问。参数"resource"有助于区分不同WEB API的令牌。
例如,如果你想访问GRAPH API-那么资源将是- "https://graph.windows.net/"
如果要访问AZURE, resource参数必须指定为- "http://management.azure.com"。
建议使用该参数,但不是必选参数。