首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取AD访问令牌并将其传递给web api控制器?

如何获取AD访问令牌并将其传递给web api控制器?
EN

Stack Overflow用户
提问于 2020-03-31 00:47:39
回答 2查看 1.1K关注 0票数 0

如何从login.microsoftonline.com获取AD访问令牌,并将访问令牌传递给web api控制器?因为我需要“访问令牌”这样通过post请求传递到另一个合作伙伴公司的网站网址。

下面的代码做了AAD身份验证的预期,但我也需要“访问令牌”这样,

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
            .AddAzureAD(options => Configuration.Bind("AzureAd", options));

        services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
        {
            options.Authority = options.Authority + "/v2.0/";


            options.TokenValidationParameters.ValidateIssuer = false;
        });

        services.AddMvc(options =>
        {
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            options.Filters.Add(new AuthorizeFilter(policy));
        })
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }
EN

回答 2

Stack Overflow用户

发布于 2020-04-01 13:56:31

上面的代码片段附加在原始帖子中,没有暴露访问令牌,但在内部它管理获取访问令牌和验证,如何做更透明的方式?

您可以在身份验证后获得令牌:

代码语言:javascript
复制
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
    options.Authority = options.Authority + "/v2.0/";         // Microsoft identity platform
    options.SaveTokens = true;
    options.TokenValidationParameters.ValidateIssuer = false; // accept several tenants (here simplified)
});

并在控制器中获取tokes:

代码语言:javascript
复制
var idToken = await HttpContext.GetTokenAsync("id_token"); 

但是对于您的代码片段,它不会返回访问令牌,因为您实现的是登录过程,而不是令牌请求。使用ADAL/MSAL获取访问受保护API的访问令牌。请参阅代码示例here

我从

获取访问令牌,并使用自定义代码验证它,以便更好地理解。

您可以从herehere了解令牌签名的验证过程。

票数 0
EN

Stack Overflow用户

发布于 2020-04-01 18:38:41

嗨,请下载并按照示例中提供的说明进行操作。它可帮助您首先设置Web APi,并提供一个客户端应用程序,该应用程序首先登录用户,然后获取web Api的访问令牌

How to secure a Web API built with ASP.NET Core

一旦你可以让样本工作,你就可以用你合作伙伴的Web Api替换样本的Web Api。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60935389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档