标签: openid-connect

将 Github 身份提供商添加到 AWS Cognito

我创建了一个 Github OAuth 应用程序,并尝试将该应用程序作为 OIDC 应用程序添加到 AWS Cognito。

但是,我无法在 Github 文档中的任何地方找到有关端点和数据的正确概述来填写。

以下字段是必需的:

发行人-> ?

授权端点=> https://github.com/login/oauth/authorize (?)

令牌端点=> https://github.com/login/oauth/access_token (?)

用户信息端点=> https://api.github.com/user (?)

Jwks uri => ?

我在任何地方都找不到 Jwks uri。任何帮助将不胜感激。

github-api openid-connect amazon-cognito

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

id_token 缺少使用 AD FS 2016 使用 OpenID Connect 的自定义声明

我正在尝试将 ADFS 2016 与本机 Android 应用程序的 OpenID Connect 身份验证结合使用来获取 ID 令牌。然后,ID 令牌将提供给我的服务器作为用户身份的证明以及一些附加属性(例如电子邮件、名字/姓氏)作为声明。

\n\n

ID 令牌必须包含自定义声明 - 这是我的症结所在。

\n\n

我已经在 ADFS 中配置了一个应用程序组,并添加了一个本机应用程序和一个 Web API。

\n\n

我已将 ADFS 中的服务器表示为 Web API,因为它允许我指定自定义声明规则。除了自定义声明规则之外,我还将本机应用程序的允许范围设置为“openid profile email allatclaims”

\n\n

我一直在使用的 Android 库是 OpenID AppAuth 库 - 除了 ID 令牌内部没有额外的声明之外,它都运行良好。

\n\n

Android 应用程序使用授权类型的代码,使用 ADFS 中本机应用程序的客户端 ID。我已将“aud”参数设置为 Web API 的标识符。

\n\n

我只能\xe2\x80\x99t 看到我\xe2\x80\x99m 缺少的内容,这将导致客户端收到带有这些自定义声明的ID 令牌。

\n\n

作为附加测试,我使用 MS ADAL 创建了一个 macOS 应用程序,并成功提供了自定义声明,但它们位于 access_token 中并且使用了 SAML。

\n

android adfs openid-connect

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

Chrome 未在我的 OpenID Connect 工作流程 (ASP.NET OWIN) 中保存/返回 Nonce cookie

我正在尝试让 OpenID Connect 身份验证适用于我的旧版 ASP.NET MVC 应用程序。我的 ASP.NET MVC 应用程序将作为中继方,我们的业务合作伙伴将作为身份提供者。

为了熟悉我需要做什么,我在 Auth0 上创建了一个帐户,并为 Web 应用程序创建了一个新的应用程序。然后我从 GitHub 下载了他们的 ASP.NET MVC OWIN 快速入门。我已完成所有设置,并且能够使用 Microsoft Edge 和 Firefox成功进行身份验证。但对于 Chrome,工作流程是这样的:

  1. 访问本地主机:3000
  2. 尝试访问受保护的资源,这会将我重定向到 localhost:3000/Account/Login
  3. /Account/Login 创建质询,它执行两件事:(1) 创建 Nonce cookie,以及 (2) 将用户重定向到 Auth0 的/authorize端点
  4. 我在 Auth0 的登录屏幕上成功登录
  5. /callback向localhost:3000 上的端点发出 POST 请求
  6. 我收到黄屏死机并显示以下消息:

IDX21323:RequireNonce 是“System.Boolean”。OpenIdConnectProtocolValidationContext.Nonce 为 null,OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce 不为 null。无法验证随机数。如果不需要检查随机数,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为“false”。请注意,如果找到“随机数”,则会对其进行评估。

检查 HTTP 流量,我发现Chrome 的问题在于步骤 (3) 中 - 当服务器在 302 重定向中设置 Nonce cookie 时 - Chrome 没有保存它。因此,当步骤(5)发生时,浏览器不会向服务器发送任何Nonce信息,验证失败。 …

cookies asp.net-mvc owin openid-connect auth0

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

将自定义角色添加到 AWS Cognito 用户池访问令牌

我正在使用 AWS Cognito 用户池来保护我的 Web 应用程序、移动应用程序和 API。我有一个定义了角色和权限的数据库。我想在登录过程中将“角色”添加到访问令牌,这样我就不需要进行数据库调用来检查用户角色。

我将无法使用 Cognito 自定义属性,因为人们可以从前端创建自定义角色,并且所有这些信息都保存在数据库中。

openid-connect amazon-cognito aws-userpools

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

Spring Boot 资源服务器和 Keycloak 范围与角色

有人在使用 Spring Boot 资源服务器和 Keycloak 吗?

我配置了我的 application.properties
spring.security.oauth2.resourceserver.jwt.issuer-uri = http://localhost:9080/auth/realms/<myrealm>

在我的 WebSecurityConfigurerAdapter 中,我可以使用客户端范围,例如 .antMatchers(HttpMethod.GET, "/user/**").hasAuthority("SCOPE_read")

但我无法使用这些角色! .antMatchers(HttpMethod.GET, "/user/**").hasRole("ADMIN")

该信息在 jwt 中可用,但 spring 不知何故不使用它。有人知道我在哪里可以找到描述映射的和平文档吗?不知怎的,我觉得我的脑子里有一个节点,但在哪里,是哪一个?

那是我的jwt:

  "exp": 1603373908,
  "iat": 1603373608,
  "jti": "0b18b386-9f62-4c42-810e-692ccc4ed7d1",
  "iss": "http://localhost:9080/auth/realms/jhipster",
  "aud": "account",
  "sub": "4c973896-5761-41fc-8217-07c5d13a004b",
  "typ": "Bearer",
  "azp": "web_app",
  "session_state": "17411db5-8d50-4f25-b520-9a3e8b19fd67",
  "acr": "1",
  "allowed-origins": [
    "*"
  ],
  "realm_access": {
    "roles": [
      "test",
      "ROLE_USER",
      "offline_access",
      "ROLE_ADMIN",
      "uma_authorization"
    ]
  },
  "resource_access": {
    "account": {
      "roles": [
        "manage-account",
        "manage-account-links",
        "view-profile"
      ]
    }
  },
  "scope": "email profile",
  "email_verified": true,
  "roles": [
    "test", …
Run Code Online (Sandbox Code Playgroud)

spring-security spring-boot openid-connect keycloak spring-oauth2

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

Keycloak 令牌交换失败并出现“invalid_token”错误

我有两个本地运行的 Keycloak 实例。它们通过 OIDC 连接。到目前为止一切正常 - 我可以通过任何 Keycloak 实例登录。

现在我正在尝试设置令牌交换,但失败并出现“invalid_token”错误。我想做“外部到内部”的代币交换。以下 Keycloak 日志显示 Keycloak 使用我向另一个 Keycloak 实例提供的令牌发送 HTTP GET 请求以获取用户信息:

08:14:36,523 DEBUG http-outgoing-19 >> "GET /auth/realms/master/protocol/openid-connect/userinfo HTTP/1.1[\r][\n]"
08:14:36,523 DEBUG http-outgoing-19 >> "Authorization: Bearer eyJhbGciOiJSU...[\r][\n]"
Run Code Online (Sandbox Code Playgroud)

响应是 401:

08:14:36,530 DEBUG http-outgoing-19 << "HTTP/1.1 401 Unauthorized[\r][\n]"
08:14:36,530 DEBUG http-outgoing-19 << "X-XSS-Protection: 1; mode=block[\r][\n]"
08:14:36,530 DEBUG http-outgoing-19 << "X-Frame-Options: SAMEORIGIN[\r][\n]"
08:14:36,530 DEBUG http-outgoing-19 << "Referrer-Policy: no-referrer[\r][\n]"
08:14:36,530 DEBUG http-outgoing-19 << "Date: Tue, 24 Nov 2020 08:14:36 GMT[\r][\n]"
08:14:36,530 DEBUG http-outgoing-19 << "Connection: keep-alive[\r][\n]" …
Run Code Online (Sandbox Code Playgroud)

openid oauth openid-connect keycloak

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

是否有 FastAPI 库可用于将端点标记为受保护并验证 HTTP Only Cookie 中的身份验证 JWT 令牌?

我正在尝试学习和使用 AWS Cognito 用户池,并与 Python FastAPI 实现的 API 集成。到目前为止,我正在使用授权代码流,将我的 Cognito 用户池重定向到 FastAPI 上的端点来解决代码挑战。源代码附加在此查询的末尾。

该 API 具有以下端点:

  1. 根终端节点 [ / ]:将浏览器重定向到我的 AWS Cognito 用户池的登录页面。
  2. 重定向端点 [ /aws_cognito_redirect ]:成功登录用户池后激活。接收来自 cognito 用户池的代码质询。在下面显示的代码中,aws_cognito_redirect终端节点通过将代码质询、redirect_uri、client_id 等发送到 AWS Cognito 用户池oauth2/token终端节点来解决代码质询。我可以在控制台日志输出中看到身份、访问和刷新令牌已成功检索。

FastAPI 另外还有一些受保护的端点,这些端点将从 Web 应用程序中调用。此外,还将有一个 Web 表单与端点进行交互。

在此阶段,我可以使用 FastAPI jinja2 模板来实现和托管 Web 表单。如果我选择此选项,大概我可以让/aws_cognito_redirect端点在仅 HTTP 会话 cookie 中返回令牌。这样,每个后续的客户端请求都会自动包含 cookie,而不会在浏览器本地存储中暴露任何令牌。我知道我必须使用此选项来处理 XSRF/CSRF。

或者,我可以使用 Angular/React 来实现前端。据推测,推荐的做法似乎是我必须将授权流程重新配置为使用 PKCE 的身份验证代码?在这种情况下,Angular/React Web 客户端将直接与 AWS Cognito 通信,以检索将转发到 FastAPI 端点的令牌。这些令牌将存储在浏览器的本地存储中,然后在每个后续请求的授权标头中发送。我知道这种方法容易受到 XSS 攻击。

在这两者中,考虑到我的要求,我认为我倾向于使用 jinja2 模板在 FastAPI 上托管 Web 应用程序,并在成功登录时返回仅 …

openid python-3.x openid-connect amazon-cognito fastapi

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

何时刷新访问令牌

我的问题是确定何时刷新访问令牌。

我读过,我应该在每次请求之前刷新新的访问令牌,但它在其他地方说不建议这样做。所以我的问题是我是否应该在每次请求之前刷新访问令牌,或者发送请求并在收到 401 未经授权状态后刷新访问令牌并重试对指定资源的请求。

oauth-2.0 openid-connect refresh-token

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

我可以在 Blazor 静态 Web 应用程序 WASM 的内置 OIDC 身份验证调用上指定回调 URL 吗?

我从 Blazor 静态 Web 应用程序调用“/.auth/login/google”(或其他提供商)。一旦用户同意,控制权将被路由回索引页面。有没有办法指定我想要不同的返回页面,例如通过“/.auth/login/google?callback=http...”之类的内容?

openid-connect azure-web-app-service blazor blazor-webassembly azure-static-web-app

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

OpenID Connect - 在这种情况下,是否应将id令牌发送到受保护资源?

假设我有一个本机应用程序需要发出请求的Web API.此API需要通过本机应用程序验证用户是谁在发出这些请求.OpenID Connect似乎是正确的选择,因为它是关于身份验证而不是OAuth的授权.

本机应用程序将用户凭据发送到IDP并获取访问令牌(用于授权)和id令牌(用于身份验证).根据我对OIDC的理解,访问令牌将被发送到API,但id令牌仅用于本机客户端应用程序.这对我没有意义,因为它关注的是用户是谁,而不是本机应用程序.

那么为什么id令牌也没有传递给受保护资源(又称API)?如果您没有将id令牌传递给API,那么什么保证访问令牌是安全的并且可以用于验证用户?否则,它似乎失去了使用OIDC而不是OAuth的好处.

security single-sign-on oauth-2.0 openid-connect

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