C# UseWindowsAzureActiveDirectoryBeareAuthentication与UseOpenIdConnectAuthentication之间有什么区别?
我有注册到azure AD的webapi。 在Startup.Auth.cs中有以下代码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
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时才会触发。非常感谢。。你能帮我一下吗?我累了。。。谢谢。。你能帮我一下吗?我累了。。。