小编Dev*_*ess的帖子

Web API – 使用不记名令牌进行身份验证

我创建了一个 MVC 应用程序,用于允许外部身份验证/注册。它已经创建了所有必要的组件(Owin、EF、注册、登录、注销),我能够在应用程序中执行所有基本活动。

现在,我想将 Web 应用程序与我的移动应用程序也将使用的 Web API 集成。我坚持在 Web API 调用中进行身份验证(使用我从 Web 应用程序收到的不记名令牌)。

我看到了在启用 OWIN 中间件的情况下创建 WEB API 项目的示例。但我不知道如何集中外部身份验证过程并为我的 Web 应用程序和移动应用程序使用令牌而且我不想使用 ANGULAR或单页应用程序。任何人都可以向我建议解决此问题的正确技术途径。谢谢你。

第1步:

我在 Visual Studio 2015 中创建了一个启用个人登录的 MVC 项目。并配置了我在谷歌开发者控制台中配置所有内容的密钥。我的Startup.cs会有以下代码

 public void ConfigureAuth(IAppBuilder app)
    {
        // Configure the db context, user manager and signin manager to use a single instance per request
        app.CreatePerOwinContext(ApplicationDbContext.Create);
        app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
        app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

        // Enable the application to use a cookie to store information for the signed in user
        // and to use …
Run Code Online (Sandbox Code Playgroud)

authentication asp.net-mvc oauth-2.0 owin asp.net-web-api2

6
推荐指数
1
解决办法
3万
查看次数

来自谷歌控制台的动态重定向 url - oAuth

我创建了一个 MVC/API 项目来启用外部身份验证,并且对我的本地主机 url 工作正常。但是,我需要实现以下目标。

  1. 我支持多租户(相同的应用程序服务和不同的数据库),因此每个租户必须根据 MVC url 中的自定义参数连接不同的数据库,例如:https://localhost/tenant1 , .../tenant2, ... /tenant3 等(此时不使用单独的子域)

  2. 我不确定 Google 控制台是否支持通配符 url 作为返回 ur 并且不确定如何在 MVC 代码中实现它(例如:http://localhost/ * OR {0} .. 类似的东西。(所以动态输入参数将从谷歌返回)

我正在阅读并尝试一些解决方案。一旦我得到完整的解决方案,将在这里更新答案。同时,如果有人有任何建议,请帮助我。

更新1:

我已更新我的源代码如下:

在重定向到外部登录之前创建会话对象

System.Web.HttpContext.Current.Session["Tenant"] = "tenantname";
Run Code Online (Sandbox Code Playgroud)

回调后读取租户详细信息并保存在会话中,以根据租户名称进行后续的数据库调用

public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
    {
        var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
        if (loginInfo == null)
        {
            return RedirectToAction("Login");
        }

        if (System.Web.HttpContext.Current.Session["Tenant"] != null)
        {
            string sessionObj = System.Web.HttpContext.Current.Session["Tenant"] as String;
        }
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc google-api multi-tenant google-oauth owin

2
推荐指数
1
解决办法
1458
查看次数