繁体   English   中英

使用适用于Azure AD的OpenId Connect实现实现身份验证吗?

[英]Implemeting Authentication using OpenId Connect implementation for Azure AD?

我正在尝试使用Azure AD在我们的网站中实现身份验证,请遵循以下参考。 我们的网站使用以下在IIS上托管的ASP.NET,MVC5堆栈。 基本上使用OpenId Connect协议进行网站认证,并使用oAuth2.0协议进行委派访问以使用令牌进行授权。

https://github.com/AzureADSamples/WebApp-WebAPI-OpenIDConnect-DotNet

从Azure AD逻辑获取令牌位于Startup.Auth.cs类中,该类是从OwinStartup类调用的。

当我在我们的站点中实现此功能时,Startup.Auth.cs ConfigureAuth仅在APP启动期间执行一次,并且按照上述参考进行。

用[Authorize]装饰控制器类或添加SignIn()并检查请求是否已通过身份验证,然后再次调用Authenticate代码。

public void SignIn() 
     { 
         // Send an OpenID Connect sign-in request. 
         if (!Request.IsAuthenticated) 
         { 
             HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType); 
         } 
     } 

问题在于SignIn()方法没有进入我们的应用程序,并且也对[Authorize]属性的作用感到好奇?

我非常感谢您对此有任何见识。 在此先感谢。

ACS不支持OpenId Connect,并且不再进行开发-因此答案的第一部分将是-不支持您尝试执行的操作。 就是说,您确定要引用ACS吗? 该示例引用的是Azure AD,这是另一种产品。 对于其余的答案,我将假定您确实引用了Azure AD。 从您的描述中,我不明白您遇到的问题是什么。 ConfigureAuth只需要执行一次即可完成其工作,这会将负责处理身份验证的模块(中间件)添加到请求处理管道中。 我不确定使用“验证”指的是什么代码。 这里不应该有这样的调用-当您请求使用[授权]装饰的路由时,ASP.NET将强制对调用者进行身份验证; 如果不是这样,则第一个请求就是这种情况,这将导致打开的连接中间件生成一个登录请求。 Signin()方法几乎相同,但是不必尝试访问标有[authorize]的资源。

如果您有显式的SignIn()操作,请不要对控制器使用[Authorize]属性。

您可能会弄混身份验证Cookie和Session变量。 检查此链接

有关详细信息。

暂无
暂无

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

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