asp.net-mvc - 具有多个应用程序的ASP.NET Identity

标签 asp.net-mvc asp.net-web-api single-sign-on asp.net-identity

因此,我们的组织正在使用ASP.NET MVC和Web API开发一些新的Web应用程序。我们决定不将事件目录用于身份验证/授权目的,因此看起来带有 Entity Framework 的asp.net身份可能有效。

在查看数据库模式时,我没有看到一个应用程序表,因此我们可以为用户凭据和应用程序访问提供一个中央存储库。这是 claim 的地方吗?看起来如何?用户->应用->角色->权限

同样,我们的目标之一是也为用户提供单点登录。新的承载 token 有可能吗?

感谢您的任何帮助,您可以提供

最佳答案

看一下本教程。它显示了如何使用Web API来实现ASP.NET Identity:

http://bitoftech.net/2015/01/21/asp-net-identity-2-with-asp-net-web-api-2-accounts-management/

至于处理多个应用程序。我想到的两种方法是:

  • AppId附加到所有用户名
  • 将一个AppId列添加到AspNetUsers表中,从UserStore派生并重新实现基于Find的方法,以便查询考虑AppId

  • 对于#1,当应用程序要创建新用户时,它将向WebApi发送包含新用户信息和AppId的请求。然后,WebApi将连接UserNameAppId以创建将写入数据库的完整用户名。因此,如果应用程序1234想要使用用户名myuser创建一个用户,则WebApi将使用用户名myuser_1234创建一个新用户。从那时起,在查询数据库时,您将首先从请求中获取UserNameAppId,将它们连接起来,然后查询数据库。

    如果另一个应用程序9900想要创建一个myuser,那么写入数据库的最终用户名将是myuser_9900

    您可能希望将应用程序详细信息存储在数据库中,并针对每个请求验证AppId以确保在处理其请求之前识别出该应用程序。

    我没有对步骤2进行太多考虑,因此这只是一个建议。

    如果要在多个应用程序之间共享用户凭据,则可以忽略上述内容,使用标准功能,并且所有应用程序都指向同一数据库,因此,无论哪个应用程序创建了哪个用户,所有应用程序都可以访问所有用户。

    更新#1:在这种情况下,可以使用承载 token ,我认为(从内存中获取)上面提到的教程系列触及了这一点,以及单个WebApi如何可以为多个应用程序提供 token 。

    关于asp.net-mvc - 具有多个应用程序的ASP.NET Identity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29415831/

    相关文章:

    java - 如何在现有的 tomcat Web 应用程序上实现 SSO

    php - 为 php 应用程序实现 SSO 的步骤

    session 未进入 session Tomcat 的单点登录

    asp.net-mvc - 使用 ASP.NET MVC 发布 Ajax 数组?

    angularjs - 使用 WebAPI 对 ng-grid 进行服务器端分页+过滤+排序

    c# - 处理 ASP.NET Web API 中的非法查询字符串参数名称

    AngularJS + HTTPS

    javascript - Knockout.js 预种子 ObservableArray

    c# - 用于电子邮件或电话的 ASP.NET MVC 数据注释验证器

    javascript - 从 RouteUrl 获取完整的 url