Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
Azure广告和ASP.NET标识+;OWIN,使用哪种方法?_Azure_Asp.net Identity_Owin_Azure Active Directory - Fatal编程技术网

Azure广告和ASP.NET标识+;OWIN,使用哪种方法?

Azure广告和ASP.NET标识+;OWIN,使用哪种方法?,azure,asp.net-identity,owin,azure-active-directory,Azure,Asp.net Identity,Owin,Azure Active Directory,我们有ASP.NET应用程序,该应用程序已投入生产4-5年。现在我正在尝试使用Azure AD、ASP.NET Identity和OWIN框架实现新的身份验证。我们的应用程序用户还需要访问云应用程序“BOX”,它已经支持使用Azure的SSO。所以,我们的想法是将我们的应用程序添加到Azure AD中并配置SSO 注意:我们没有本地Active Directory,我只想使用Azure AD进行web应用验证。 和往常一样,在阅读了大量有关MSDN的文档之后,我对应该使用哪种身份验证机制感到困惑

我们有ASP.NET应用程序,该应用程序已投入生产4-5年。现在我正在尝试使用Azure AD、ASP.NET Identity和OWIN框架实现新的身份验证。我们的应用程序用户还需要访问云应用程序“BOX”,它已经支持使用Azure的SSO。所以,我们的想法是将我们的应用程序添加到Azure AD中并配置SSO

注意:我们没有本地Active Directory,我只想使用Azure AD进行web应用验证。

和往常一样,在阅读了大量有关MSDN的文档之后,我对应该使用哪种身份验证机制感到困惑

第一种方法-基于Microsoft文章
我已经使用Nuget配置了以下软件包

    PM> Install-Package Microsoft.Owin.Security.OpenIdConnect  
    PM> Install-Package Microsoft.Owin.Security.Cookies  
    PM> Install-Package Microsoft.Owin.Host.SystemWeb  
然后我在Azure AD中配置了应用程序,然后在ASP.Net应用程序中在应用程序设置中配置'ida:ClientId''ida:Tenant''ida:PostLogoutRedirectUri'。然后在启动时调用以下代码(并根据本文执行一些额外的步骤)

第二种方法–基于VS 2013 Ultimate提供的模板 在这里,当您使用VS 2013创建新应用程序并使用组织帐户选项配置身份验证时,将添加以下appsettings “ida:FederationMetadataLocation”、“ida:Realm”和“ida:AudienceUri”然后添加代码以验证用户身份

问题
1> 我不确定应该使用哪种方法,有什么区别。
2> 根据Microsoft视频,如果您使用第二种方法创建应用程序,Visual Studio将在Azure AD中为该租户创建应用程序。但是它不再创造了,最近有没有改变?我们是否总是必须在Azure AD中手动创建应用程序

EDIT1

当我在VS 2013中创建新的MVC或Web表单应用程序并配置身份验证时,有4个选项。其中2个是“个人账户”和“组织账户”。上述方法1适用于“个人账户”,方法2适用于组织账户。但是我仍然不知道什么时候我应该用一个而不是另一个?为什么一个使用客户机id而另一个使用restful API(联邦元数据)?如果我想让同一用户访问多个云应用程序,我应该使用哪种方法?

以下是所有AzureAD示例。

特别是这些OIDC样本应该会让您开始使用。如果你被卡住了,请告诉我


很抱歉给您带来了困惑。随着技术的发展,您正在经历多个版本的分层。让我澄清两点

  • Visual Studio 2013在用于web sign的OWIN中间件之前发布 上有空。因此,ASP.NET项目模板 仍然基于旧技术(Windows Identity Foundation)和 旧协议(ws-federation)
  • VS2013发布后,我们开发了新的类(您在quickstart文章中遇到过),这些类通过更灵活的对象模型(OWIN中间件)和更现代的协议(openid connect)支持web登录。您可以选择“手动”使用此类类(如quickstart中所述),也可以选择使用Visual Studio 2015中的新模板(放弃旧技术(WIF)并自动化a)使用OWIN中间件生成项目b)在您选择的Azure AD租户中为应用程序提供一个条目
  • 个人帐户与“工作和学校”帐户的选择允许您选择应用程序是否逐个验证用户(对于前者)并拥有所有用户的详细信息,或者您是否希望应用程序将验证外包给用户所在的组织。如果您想使用Azure AD,您需要执行后一种操作:身份验证由Azure AD完成,您只需要将应用程序配置为在对用户进行身份验证时重定向到Azure AD

  • 也许不完全是你想要的,但是这个()和这个()可能会帮助你找到正确的方向。在第一种情况下,我启用本地ASP.NET身份登录、ASP.NET身份外部身份提供程序登录和组织登录(通过Azure AD)。这两篇文章使用的步骤与我在方法1中提到的相同。我想知道这两种方法之间的区别是什么,为什么它们有不同的应用程序设置?为什么一种方法使用clientid而另一种方法使用restful API..就像federation metadataOne使用WsFederation一样,它使用与WSFed相关的术语:FederationMetadataLocation、Realm、AudienceUri。一种是使用OpenIdConnect,用户使用OpenIdConnect的术语是:Authority、ClientId、audition。WsFed和OIDC是从身份提供者(IDP)获取身份的两个协议。我推荐OIDC,整个行业正朝着这个方向发展。谢谢。这就是我要找的。但是,如果我使用VS 2013 Ultimate Update 5创建新应用程序。并将其配置为使用工作和学校帐户,它仍然使用WSFedderation方法。不确定为什么不使用新方法OpenIDConnector最简单的方法是使用OWIN。Katana是今年发布的新ASP.CORE中被扩展并成为一流的模型。有关OWIN的详细信息,请参阅:。有关ASP.CORE的信息,请参阅:我正在使用.NET 4.5.1和MVC 5。@vironet感谢您的澄清。但我们需要使用“个人用户身份验证和facebook/google”,还需要包括Azure广告身份验证。你能给我指一下正确的方向吗。到目前为止,我发现了一个问题,但并没有解决办法。
    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
    
        app.UseCookieAuthentication(new CookieAuthenticationOptions());
    
        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri,
            });
    }