【问题标题】:Exchange Google token for IdentityServer token用 Google 令牌交换 IdentityServer 令牌
【发布时间】:2019-11-18 14:30:14
【问题描述】:

我已经设置了 Identity Server 4 的实例,并为客户端启用了授权码授权。我可以使用此授权轻松登录我的 c# MVC 应用程序。我也有一个我想绑定的 Android 应用程序。理想情况下,我将能够使用本地 Google/Facebook 登录机制,以便用户获得最佳体验。但是,如果我使用这些,我会得到一个 Google/Facebook 令牌,而不是来自 Identity Server 的令牌,这会在代表用户与我们的 API 交谈时产生授权问题。

我可以在 Identity Server 中使用某种机制来将 Google/Facebook 令牌换成 Identity Server 令牌吗?这甚至是个好主意吗?

Stack Exchange 应用程序会执行此操作,但我无法确定它在幕后使用了哪些技术。我猜是 TL;DR;是我想使用我的应用程序和 Identity Server 模拟 Stack Exchange 应用程序登录工作流程,但在本机登录方面需要一点指导。

请参阅下面的 Stack Exchange 登录工作流程。

点击“登录”后:

单击 Google 或 Facebook 将显示本机登录屏幕。单击使用另一个 OpenId 登录会将您重定向到通过浏览器加载的标准登录。

【问题讨论】:

    标签: android identityserver4


    【解决方案1】:

    这是可能的。甚至官方文档也有一个example 用于谷歌集成 它看起来像

    services.AddAuthentication()
        .AddGoogle("Google", options =>
        {
            options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
    
            options.ClientId = "...";
            options.ClientSecret = "...";
        })
    

    并使用

    触发调用
    var callbackUrl = Url.Action("ExternalLoginCallback");
    
    var props = new AuthenticationProperties
    {
        RedirectUri = callbackUrl,
        Items =
        {
            { "scheme", provider },
            { "returnUrl", returnUrl }
        }
    };
    
    return Challenge(provider, props);
    

    最终它将接受 Google 生成的令牌作为自己的令牌。您也可以将其用于您自己的外部身份验证方式 - Facebook、Twitter 等。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 2022-01-12
      • 2019-03-16
      • 2016-09-29
      • 2017-02-02
      • 2012-09-16
      • 2011-01-19
      • 2014-07-23
      • 2014-02-10
      相关资源
      最近更新 更多