【问题标题】:Implemeting Authentication using OpenId Connect implementation for Azure AD?使用 Azure AD 的 OpenId Connect 实现来实现身份验证?
【发布时间】:2015-08-28 06:26:01
【问题描述】:

我正在尝试使用 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] 属性的作用感到好奇?

我非常感谢您对这些的任何见解。非常感谢。

【问题讨论】:

    标签: owin openid-connect azure-acs


    【解决方案1】:

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

    【讨论】:

    • 是的,它是 Azure AD,我已经在问题中更新了它。感谢您的回复,它有帮助。
    • 关于“ASP.NET 将强制调用者经过身份验证” - 它是否在 Startup.Auth.cs app.UseOpenIdConnectAuthentication(..); 中执行身份验证处理程序中的代码;我在调试代码时没有看到这个执行。
    • 此处强制意味着检查 isauthenticated 标志是否为真,否则开始返回 401。正如我在答案中所说,初始化只发生一次。如果有你连接通知的代码,那应该被执行 - 但只有当你得到一个令牌时,这是稍后的。
    【解决方案2】:

    如果您有明确的 SignIn() 操作,请勿在控制器中使用 [Authorize] 属性。

    您可能弄乱了身份验证 cookie 和 Session 变量。 检查this link

    了解详情。

    【讨论】:

      猜你喜欢
      • 2021-07-29
      • 2023-03-20
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 2016-06-28
      • 2022-08-23
      • 2023-03-12
      相关资源
      最近更新 更多