如何在 .netframework 中使用 OAuth 2.0 On-Behalf-Of API
How to use OAuth 2.0 On-Behalf-Of in .netframework API
我有 2 个 API,我想使用 OAuth 2.0 On-Behalf-Of 流程在 API1 中生成令牌并使用生成的授权给 API2令牌。
我关注了 https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#middle-tier-access-token-request,我能够生成令牌。
我使用以下参数:
grant_type:urn:ietf:params:oauth:grant-type:jwt-bearer
client_id:xxxxx
client_secret:xxxxxx
requested_token_use:on_behalf_of
scope:https://graph.microsoft.com/user.read
但我不知道如何使用该令牌对我的 API2 进行身份验证并获取用户以及后续步骤是什么。我的 API 使用 .netframework 应用程序。
我创建了 OwinStartup 并添加了 UseWindowsAzureActiveDirectoryBearerAuthentication
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions()
{
Tenant = "xxxxxxxxxx",// Azure tenant Id
TokenValidationParameters = new TokenValidationParameters()
{
SaveSigninToken = true,
ValidAudience = "https://graph.microsoft.com"
}
});
并将 Authorize 属性添加到我的控制器中。但是当我调用该控制器的 get 端点时,它给了我一条错误消息:
此请求的授权已被拒绝。
你需要申请两个token,一个是APIA的access token,一个是[=的access token 30=] B 使用API A 的访问令牌作为参数获得。
您参考的文档是根据您获得的api个访问令牌,有instructions in the document.
首先需要使用auth code flow或其他登录流程获取api的access token A:
然后用APIA的access token作为参数获取APIB的access token。
在 API A 中,我使用了错误的范围来生成令牌。 https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#middle-tier-access-token-request
我有 2 个 API,我想使用 OAuth 2.0 On-Behalf-Of 流程在 API1 中生成令牌并使用生成的授权给 API2令牌。
我关注了 https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#middle-tier-access-token-request,我能够生成令牌。 我使用以下参数:
grant_type:urn:ietf:params:oauth:grant-type:jwt-bearer
client_id:xxxxx
client_secret:xxxxxx
requested_token_use:on_behalf_of
scope:https://graph.microsoft.com/user.read
但我不知道如何使用该令牌对我的 API2 进行身份验证并获取用户以及后续步骤是什么。我的 API 使用 .netframework 应用程序。
我创建了 OwinStartup 并添加了 UseWindowsAzureActiveDirectoryBearerAuthentication
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions()
{
Tenant = "xxxxxxxxxx",// Azure tenant Id
TokenValidationParameters = new TokenValidationParameters()
{
SaveSigninToken = true,
ValidAudience = "https://graph.microsoft.com"
}
});
并将 Authorize 属性添加到我的控制器中。但是当我调用该控制器的 get 端点时,它给了我一条错误消息: 此请求的授权已被拒绝。
你需要申请两个token,一个是APIA的access token,一个是[=的access token 30=] B 使用API A 的访问令牌作为参数获得。
您参考的文档是根据您获得的api个访问令牌,有instructions in the document.
首先需要使用auth code flow或其他登录流程获取api的access token A:
然后用APIA的access token作为参数获取APIB的access token。
在 API A 中,我使用了错误的范围来生成令牌。 https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#middle-tier-access-token-request