繁体   English   中英

OAuth承载令牌认证授权码

[英]OAuth bearer token authentication authorisation code

目前,我们的ASP.NET MVC系统使用OpenIdConnect和cookie身份验证进行保护。 我们使用azure活动目录启用了oauth身份验证流程。

    public void ConfigureAuthOpenIdConnect(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        var cookieAuthenticationOptions = new CookieAuthenticationOptions()
        {
           //...
        };

        app.UseCookieAuthentication(cookieAuthenticationOptions);

        var notifications = new OAOpenIdConnectAuthenticationNotifications();
        var openIdConnectAuthenticationOptions = new OpenIdConnectAuthenticationOptions()
        {
            //...
            Notifications = notifications
        };

        app.UseOpenIdConnectAuthentication(openIdConnectAuthenticationOptions);

        app.UseWindowsAzureActiveDirectoryBearerAuthentication(
           new WindowsAzureActiveDirectoryBearerAuthenticationOptions
           {
               Tenant = ConfigHelper.ClientSettings.TenantName,
               TokenValidationParameters = new TokenValidationParameters
               {
                   ValidAudience = ConfigHelper.ClientSettings.ClientId
               }
           });
    }

现在,当我们通过OpenIdConnect进行身份验证时,我们使用OpenIdConnectAuthenticationOptions选项上的自定义Notifications检索授权代码,这使我们能够使用ADAL请求和缓存资源令牌。

当尝试使用azure AD承载令牌访问我们的系统时会出现问题,此获取和缓存资源令牌的工作流程不存在。

所以我的问题是,如何使用持票令牌启用此功能? 如何使用OpenIdConnect请求其他资源令牌? 是否可以使用ADAL从持有人令牌获取授权码?

如您所述,您使用OpenID Connect ASP.NET中间件和ADAL .NET来使用Azure AD进行登录,然后在OnAuthorizationCodeReceived OpenID Connect通知中以登录用户身份调用Web API。

在此方案中,您可以使用授权代码将其交换为特定资源的访问令牌。

另一方面,当客户端应用程序使用azure AD承载令牌访问您的系统时,没有授权代码。 在这种情况下,如果要使用该访问令牌将其交换到另一个资源的访问令牌(如Microsoft Graph),则可以使用OAuth 2.0 On-Behalf-Of流 OAuth 2.0 On-Behalf-Of流服务于应用程序调用服务/ Web API的用例,而服务/ Web API又需要调用另一个服务/ Web API。

有关协议如何在此方案中工作的详细信息,请参阅Azure ADOn-Behalf-Of流教程的 身份验证方案 当然,您可以使用ADAL.NET来执行On-Behalf-Of流程,请参阅此代码示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM