我有一个ASP.NET 5(RC1)应用程序,我正在尝试设置身份验证和授权。然而,我对所有与此平台相关的在线变化的身份验证和授权信息感到困惑和不堪重负。其中大部分似乎无可救药地过时或者似乎并不适用于这种特定的使用场景。现在,我甚至不确定什么是正确的术语'用于我想问的问题,但我离题了。
我想要实现的是一个系统,通过Azure AD(B2C?)对用户进行身份验证/授权,并在数据库中存储其他用户配置文件信息。但是,使用我认为是自定义ClaimsPrincipal / ClaimsIdentity的自定义方式访问控制器中的用户上下文?我认为这应该像添加“授权”一样简单。属性或类似的东西并访问ClaimsPrinciple.Current.Claims。
我过去曾使用过ASP.NET身份,但我发现的许多例子并没有使用它。大多数人只是使用UseOpenIdConnectAuthentication中间件。我看到ASP.NET身份仍然可用,但我不确定它是否适用于这种情况。我还在这里发现了一些帖子,建议使用自定义的ClaimsIdentity来完成此任务,但我无法找到有用的最新示例。顺便说一句,我意识到这很多" profile"信息可以作为自定义属性存储在azure广告中,但在应用程序中使用某些信息的方式会禁止所有信息都处于天蓝色状态(即EF linq连接等)。
请告诉我,如果我对其中的某些内容非常接近。我知道这是一个相当新的平台,信息很少,但我当然不是唯一一个提出这些问题的人。
答案 0 :(得分:3)
只需发表精彩文章Identity management for multitenant applications in Microsoft Azure。
很多问题都在那里得到解答。
e.g。您可以在OWIN中间件AuthenticationValidated事件中增加声明。
ASP.NET Identity是基于声明的,因为属性是作为声明提供的,但身份验证在数据库上,而不是通过外部IDP(如Azure AD)。
B2C是Azure AD中的一个特例 - 用于可以自我注册和自我管理的许多(数百万!)外部用户。 SSPR。
B2C使用单独的租户到普通的Azure AD,用户无权访问O365或任何SaaS应用程序。