1

最近我花了一些时间研究 AspNet.Security.OpenIdConnect.Server。我使用MVC 示例作为我的客户端/服务器应用程序的代码库。

我现在需要实现的是从外部提供商 (Google) 获取用户的个人资料信息并将信息保存到服务器的数据库中。

获取和保存配置文件信息的正确位置以及实施它的正确方法是什么?

4

1 回答 1

2

注意:由于 ASOS ( AspNet.Security.OpenIdConnect.Server) 仅处理 OAuth2/OpenID Connect 服务器部分,它实际上不涉及身份验证部分,因此不直接处理您配置的外部提供程序。

要实现您想要的,最好的方法是配置 Google 中间件以从用户配置文件响应中返回的用户对象中提取更多信息,并将它们保存在身份验证 cookie 中,以便您以后可以在应用程序代码中检索它们。

app.UseGoogleAuthentication(options => {
    options.ClientId = "client_id";
    options.ClientSecret = "client_secret";

    options.Events = new OAuthEvents {
        OnCreatingTicket = context => {
            // Extract the "language" property from the JSON payload returned by
            // the user profile endpoint and add a new "urn:language" claim.
            var language = context.User.Value<string>("language");
            context.Identity.AddClaim(new Claim("urn:language", language));

            return Task.FromResult(0);
        }
    };
});

您可以从 User 实例中检索 urn:language 声明

如果响应不包含您需要的数据,则没有什么可以阻止您使用context.Backchannel另一个 HTTP 调用从不同的 Google 端点检索更多数据。

于 2016-02-16T17:07:56.173 回答