thinktecture IdentityServer3 Facebook登录按钮问题



我正在使用" IdentityServer3 -IdentityManager -MenderhipReboot",用于用户管理,身份验证&资源授权。

我从下面的示例开始,并有助于创建用户,通过/connect/token api对其进行认证并授权资源。https://github.com/thinktecture/thinktecture.inderityserver.v3.samples/tree/master/master/source/membershipreboot

我解决方案的简短架构是

  1. MySQL作为数据库。通过会员Reboot.ef与会员blipreboot的通信。

  2. 使用html angularjs开发客户端项目。

  3. 资源API是使用Nancy&开发的。在一个单独的项目中托管在Owin Katana上。

  4. 身份验证服务(IDSVR IDMGR MR)托管在一个单独的项目中。

现在,我想创建一个简单的按钮/链接单击,将我带到Facebook登录。此按钮的功能应与IDSVR默认登录页面(https://localhost:44333/core/login?signin = 4F909A877CC465AF26D26D72F60EC08F51)" Facebook"。

我尝试过很多谷歌搜索的互联网,但没有任何案例与我的情况匹配。我什至尝试复制默认IDSVR Facebook登录的请求响应行为,但由于cookie并未保存在最终客户端上。

还尝试点击" https://localhost:44333/core/signin-facebook",并从服务器中获得响应,以 http/1.1 500内部服务器错误。因此,我认为我可能是在IDSRV项目中设置Facebook选项的某个地方。

因此,如果某人可以为我提供一个IDSVR API来连接或告诉我如何配置ID SVR,以便映射URL可以将其重定向到Facebook登录。或可以告诉我,在IDSRV中设置Facebook身份验证选项时,我在哪里错了。

我问题的简短答案是我正在寻找URL。

; wenspys_mode = form_post

如果您想更好地了解此URL

,请进一步阅读

经过大量命中;研究工作,我为此提供了解决方案。好吧,我认为出于这个问题的根本原因是突然的新技术事物(Owin,Katana,Oauth,IdentityServer,IdentityManagement,会员资助启动,Owin Facebook),并且有一个微不足道的时间来了解它们。

我会建议人们,无论谁在与我相同的情况下,然后首先了解Oauth的想法。我在下面的链接中找到了一个简短而又好的。

http://tutorials.jenkov.com/oauth2/index.html

之后,我了解到在我们的情况下,我们正在处理两个应用程序,因此正在处理两个认证。

  1. 用于将用户连接到Facebook。我们在developers.facebook.com

  2. 上创建了一个应用程序
  3. 用于将用户连接到IdentityServer。我们在authenticationservices project上的clients.cs文件中创建了一个客户端。

所以现在是最终解决方案。localhost:44333 AuthenTicationService正在运行locahost:8088,在prontend Services正在运行的地方,以供应AuthenTicationService。

1。在Authenticationservices中创建客户端应用,如下

            new Client
            {
                ClientName = "Implicit Clients",
                Enabled = true,
                ClientId = "implicitclient",
                ClientSecrets = new List<ClientSecret>{
                    new ClientSecret("secret".Sha256())
                },
                Flow = Flows.Implicit,
                RequireConsent = true,
                AllowRememberConsent = true,
                RedirectUris = new List<string>
                {
                    "http://localhost:8088/login/auth" //This should be redirect url you want to hit after your app(not facebook app) redirects. 
                },
                ScopeRestrictions = new List<string>
                { 
                    Constants.StandardScopes.OpenId,
                    Constants.StandardScopes.Profile,
                    Constants.StandardScopes.Email,
                    "read",
                    "write",
                },
                //SubjectType = SubjectTypes.Global,
                AccessTokenType = AccessTokenType.Jwt,
                IdentityTokenLifetime = 360,
                AccessTokenLifetime = 360,
            },

2创建授权URL如下

     var client = new OAuth2Client(new Uri("https://localhost:44333/core/connect/authorize"));
        var startUrl = client.CreateAuthorizeUrl(
            clientId: "implicitclient",
            responseType: "token",
            scope: "read",
            redirectUri: "http://localhost:8088/login/auth",
            nonce: "random_nonce",
            responseMode: "form_post",
            acrValues: "idp:Facebook");
  1. 成功授权后的Facebook应用程序将默认为http://localhost:44333/signin-facebook。因此无需在此处进行任何更改。

  2. 最后在http://localhost:8088/login/auth成功后,您将获得access_token( 其他几个参数)。在此之前,您可以使用此令牌从资源服务器访问资源。

相关内容

  • 没有找到相关文章

最新更新