【发布时间】:2015-01-09 05:22:17
【问题描述】:
我们正在使用 WebAPI 后端升级我们的 SPA(角度)应用程序,以通过 Google 使用 OpenID Connect 进行身份验证。理想情况下,我们希望使用混合流。
我们已经到了在单击 Google 登录按钮后,浏览器会重定向到 google,引导您通过同意屏幕并将响应发送回我们的应用程序以及代码和 id 令牌。那里发布的大多数场景展示了如何配置 MVC 应用程序,并在返回授权码时触发通知:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = "",
MetadataAddress = "https://accounts.google.com/.well-known/openid-configuration",
RedirectUri = "https://localhost:44300/authentication",
Scope = "openid profile",
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthorizationCodeReceived = async n =>
{
这在我们的案例中永远不会触发,我认为这是因为响应被发送回我们的 SPA,而不是我们应用的服务器端端点。接下来的步骤是什么?
- 我们是否在客户端收到代码并向我们的 Web api 层发送 ajax 请求,然后将其交换为访问令牌?一旦我们有了访问令牌,我们如何传达用户已登录,以便在我们从 js 进行 api 调用时将令牌识别为有效。
- 我们是否告诉 google 将响应发送到我们的 web api 层,让其交换访问令牌的代码,并发送带有最后包含访问令牌的哈希片段的重定向响应?通知处理程序会在这种情况下触发吗?
在任何一种情况下,我们都可以利用 OpenID 中间件中的任何东西来交换代码吗?发布请求似乎并不复杂,但如果可能的话,利用现有的库仍然会很好。
【问题讨论】:
标签: asp.net-web-api google-authentication katana openid-connect