Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# UseWindowsAzureActiveDirectoryBeareAuthentication与UseOpenIdConnectAuthentication之间有什么区别?_C#_.net_Azure_Azure Active Directory - Fatal编程技术网

C# UseWindowsAzureActiveDirectoryBeareAuthentication与UseOpenIdConnectAuthentication之间有什么区别?

C# UseWindowsAzureActiveDirectoryBeareAuthentication与UseOpenIdConnectAuthentication之间有什么区别?,c#,.net,azure,azure-active-directory,C#,.net,Azure,Azure Active Directory,我有注册到azure AD的webapi。 在Startup.Auth.cs中有以下代码 public void ConfigureAuth(IAppBuilder app) { app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); app.UseCookieAuthentication(new Co

我有注册到azure AD的webapi。 在Startup.Auth.cs中有以下代码

   public void ConfigureAuth(IAppBuilder app)
        {
            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
            app.UseCookieAuthentication(new CookieAuthenticationOptions());
            app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
            {
                ClientId = ClientId,
                Authority = Authority,
                PostLogoutRedirectUri = PostLogoutRedirectUri
            });
当我在浏览器中运行这个webapi时,它会要求登录,并且在登录成功后能够看到所有api的url

我正在尝试从注册到同一azure广告的web应用程序访问此安全api

当我在Webapp中使用
AcquireTokenAsync
为这个webapi生成访问令牌时,它可以工作,但会给出登录html页面作为响应

为了避免这种情况,我尝试使用
AcquireTokenSilentAsync
生成静默令牌,但出现异常
无法生成令牌缓存未找到
,但缓存键仍在那里找到异常

在一些google git帖子建议使用
UseWindowsAzureActiveDirectoryBeareAuthentication
将该代码导入WebApi之后,他们说当从webapp调用时,它将返回api的输出,而不是登录页面输出,但它不起作用

 app.UseWindowsAzureActiveDirectoryBearerAuthentication(
                new WindowsAzureActiveDirectoryBearerAuthenticationOptions
                {
                    Audience = ConfigurationManager.AppSettings["ida:Audience"],
                    Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
                    TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters
                    {
                        ValidateIssuer = false
                    }
                });

API不应要求用户登录。具有承载令牌身份验证的第二个选项是正确的。这意味着您的客户端应用程序需要获取一个访问令牌,并通过HTTP请求传递它

AcquireTokenAsync
AcquireTokenSilentAsync
的工作方式与您的想法略有不同。 第一个接受一些参数,然后调用AAD授权的/oauth2/token端点以获取访问令牌,除非缓存中已经有访问令牌。 静默版本只检查缓存,如果找不到,则抛出异常

因此,您的客户端应用程序通常会使用
AcquireTokenAsync
变体之一来获取访问令牌和刷新令牌。 当您这样做时,ADAL将把令牌存储在您提供给它的令牌缓存中(或者默认情况下存储在内存缓存中)。
然后,在代码的后面部分,您可以使用静默版本来获取令牌,因为您可以预期令牌将位于缓存中。

API不应要求用户登录。具有承载令牌身份验证的第二个选项是正确的。这意味着您的客户端应用程序需要获取一个访问令牌,并通过HTTP请求传递它

AcquireTokenAsync
AcquireTokenSilentAsync
的工作方式与您的想法略有不同。 第一个接受一些参数,然后调用AAD授权的/oauth2/token端点以获取访问令牌,除非缓存中已经有访问令牌。 静默版本只检查缓存,如果找不到,则抛出异常

因此,您的客户端应用程序通常会使用
AcquireTokenAsync
变体之一来获取访问令牌和刷新令牌。 当您这样做时,ADAL将把令牌存储在您提供给它的令牌缓存中(或者默认情况下存储在内存缓存中)。
然后,在代码的后面部分,您可以使用静默版本获取令牌,因为您可以预期它们将位于缓存中。

ASP.NET OWIN组件包括专门设计用于通过Azure AD和OAuth2承载令牌访问保护web API的中间件。OpenID连接中间件(
UseOpenIdConnectAuthentication
)在请求到达为浏览器提供UX服务的UX控制器时触发,其中作为Azure AD OAuth2承载令牌中间件(
UseWindowsAzureActiveDirectoryBeareAuthentication
)仅当请求用于web API时激发。

ASP.NET OWIN组件包括专门设计用于通过Azure AD和OAuth2承载令牌访问保护web API的中间件。OpenID连接中间件(
UseOpenIdConnectAuthentication
)在请求到达为浏览器提供UX服务的UX控制器时触发,而Azure AD OAuth2承载令牌中间件(
UseWindowsAzureActiveDirectoryBeareAuthentication
)仅在请求用于web API时才会触发。

非常感谢。。你能帮我一下吗?我累了。。。谢谢。。你能帮我一下吗?我累了。。。