2016-05-16 135 views
4

我有一个ASP.NET 5(RC1)应用程序,我尝试设置身份验证和授权。然而,我很困惑,因为它涉及到这个平台,所有不同的身份验证和授权信息都在线。它的大部分看起来无论是过时的还是根本不适用于这种特定的使用场景。现在,我甚至不确定用什么正确的术语来解决我想问的问题,但我离题了。结合Azure AD(b2c)自定义ClaimsIdentity

我想要完成的是一个系统,用户通过Azure AD(B2C?)进行身份验证/授权,并将其他用户配置文件信息存储在数据库中。但是,控制器中的用户上下文是以一致的方式访问的,使用我认为是定制的ClaimsPrincipal/ClaimsIdentity?我想这应该和添加'authorize'属性或类似的东西一样简单,然后访问ClaimsPrinciple.Current.Claims。

我以前使用过ASP.NET Identity,但我发现的许多例子都没有使用它。大多数只是使用UseOpenIdConnectAuthentication中间件。我发现ASP.NET Identity仍然可用,但我不确定它适用于这种情况。我还在这里发现了一些关于使用自定义ClaimsIdentity来完成此任务的帖子,但我无法找到有用的最新示例。顺便说一句,我意识到,这些“配置文件”信息中的大部分都可以作为自定义属性存储在azure广告中,但某些信息在应用程序中使用的方式禁止它全部处于天蓝色(即EF linq连接等)。

请告诉我,如果我甚至关闭这一些。我知道这是一个相当新的平台,信息很少,但我不是唯一提出这些问题的人。

回答

3

只是叫出优秀的文章Identity management for multitenant applications in Microsoft Azure

很多你的问题都在那里回答。

例如您可以增强OWIN中间件AuthenticationValidated事件中的声明。

ASP.NET身份是基于声明的,因为属性是作为声明提供的,但身份验证位于数据库上,而不是像Azure AD这样通过外部IDP。

B2C是Azure AD中的一个特例 - 用于许多(百万)外部用户,他们可以自行注册和自行管理SSPR。

B2C将一个单独的租户用于正常的Azure AD,并且用户无法访问诸如O365或任何SaaS应用程序之类的内容。

+0

谢谢你的回复。通读后,也看着这个:https://github.com/aspnet/Identity/blob/ab43154577fe126ef531bb7a11b5eaa03add7bbf/src/Microsoft.AspNet.Identity/PrincipalExtensions.cs#L35-42它似乎有一个ClaimType和一个组合扩展方法可能适合我正在尝试做的事情。对此有何想法? – Brandon

+0

是的 - 可能结合来自AAD的声明和信息。你需要建立数据库吗? – nzpcmad