Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OAuth承载令牌认证授权码_C#_Asp.net_Oauth_Azure Active Directory_Adal - Fatal编程技术网

C# OAuth承载令牌认证授权码

C# OAuth承载令牌认证授权码,c#,asp.net,oauth,azure-active-directory,adal,C#,Asp.net,Oauth,Azure Active Directory,Adal,目前,我们的ASP.NET MVC系统使用OpenIdConnect和cookie身份验证进行安全保护。我们已经使用azure active directory启用了oauth身份验证流 public void ConfigureAuthOpenIdConnect(IAppBuilder app) { app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.Authenticati

目前,我们的ASP.NET MVC系统使用OpenIdConnect和cookie身份验证进行安全保护。我们已经使用azure active directory启用了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),则可以使用。代表flow的OAuth 2.0服务于应用程序调用服务/web API的用例,而服务/web API又需要调用另一个服务/web API

有关协议在此场景中如何工作的更多信息,请参阅和。
当然,您可以使用ADAL.NET执行“代表”流程,请参见。

我需要的是“代表”工作流。非常感谢你!