我创建了一个 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。任何帮助将不胜感激。
我正在尝试将 ADFS 2016 与本机 Android 应用程序的 OpenID Connect 身份验证结合使用来获取 ID 令牌。然后,ID 令牌将提供给我的服务器作为用户身份的证明以及一些附加属性(例如电子邮件、名字/姓氏)作为声明。
\n\nID 令牌必须包含自定义声明 - 这是我的症结所在。
\n\n我已经在 ADFS 中配置了一个应用程序组,并添加了一个本机应用程序和一个 Web API。
\n\n我已将 ADFS 中的服务器表示为 Web API,因为它允许我指定自定义声明规则。除了自定义声明规则之外,我还将本机应用程序的允许范围设置为“openid profile email allatclaims”
\n\n我一直在使用的 Android 库是 OpenID AppAuth 库 - 除了 ID 令牌内部没有额外的声明之外,它都运行良好。
\n\nAndroid 应用程序使用授权类型的代码,使用 ADFS 中本机应用程序的客户端 ID。我已将“aud”参数设置为 Web API 的标识符。
\n\n我只能\xe2\x80\x99t 看到我\xe2\x80\x99m 缺少的内容,这将导致客户端收到带有这些自定义声明的ID 令牌。
\n\n作为附加测试,我使用 MS ADAL 创建了一个 macOS 应用程序,并成功提供了自定义声明,但它们位于 access_token 中并且使用了 SAML。
\n我正在尝试让 OpenID Connect 身份验证适用于我的旧版 ASP.NET MVC 应用程序。我的 ASP.NET MVC 应用程序将作为中继方,我们的业务合作伙伴将作为身份提供者。
为了熟悉我需要做什么,我在 Auth0 上创建了一个帐户,并为 Web 应用程序创建了一个新的应用程序。然后我从 GitHub 下载了他们的 ASP.NET MVC OWIN 快速入门。我已完成所有设置,并且能够使用 Microsoft Edge 和 Firefox成功进行身份验证。但对于 Chrome,工作流程是这样的:
/authorize端点/callback向localhost:3000 上的端点发出 POST 请求检查 HTTP 流量,我发现Chrome 的问题在于步骤 (3) 中 - 当服务器在 302 重定向中设置 Nonce cookie 时 - Chrome 没有保存它。因此,当步骤(5)发生时,浏览器不会向服务器发送任何Nonce信息,验证失败。 …
我正在使用 AWS Cognito 用户池来保护我的 Web 应用程序、移动应用程序和 API。我有一个定义了角色和权限的数据库。我想在登录过程中将“角色”添加到访问令牌,这样我就不需要进行数据库调用来检查用户角色。
我将无法使用 Cognito 自定义属性,因为人们可以从前端创建自定义角色,并且所有这些信息都保存在数据库中。
有人在使用 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
我有两个本地运行的 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) 我正在尝试学习和使用 AWS Cognito 用户池,并与 Python FastAPI 实现的 API 集成。到目前为止,我正在使用授权代码流,将我的 Cognito 用户池重定向到 FastAPI 上的端点来解决代码挑战。源代码附加在此查询的末尾。
该 API 具有以下端点:
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 应用程序,并在成功登录时返回仅 …
我的问题是确定何时刷新访问令牌。
我读过,我应该在每次请求之前刷新新的访问令牌,但它在其他地方说不建议这样做。所以我的问题是我是否应该在每次请求之前刷新访问令牌,或者发送请求并在收到 401 未经授权状态后刷新访问令牌并重试对指定资源的请求。
我从 Blazor 静态 Web 应用程序调用“/.auth/login/google”(或其他提供商)。一旦用户同意,控制权将被路由回索引页面。有没有办法指定我想要不同的返回页面,例如通过“/.auth/login/google?callback=http...”之类的内容?
openid-connect azure-web-app-service blazor blazor-webassembly azure-static-web-app
假设我有一个本机应用程序需要发出请求的Web API.此API需要通过本机应用程序验证用户是谁在发出这些请求.OpenID Connect似乎是正确的选择,因为它是关于身份验证而不是OAuth的授权.
本机应用程序将用户凭据发送到IDP并获取访问令牌(用于授权)和id令牌(用于身份验证).根据我对OIDC的理解,访问令牌将被发送到API,但id令牌仅用于本机客户端应用程序.这对我没有意义,因为它关注的是用户是谁,而不是本机应用程序.
那么为什么id令牌也没有传递给受保护资源(又称API)?如果您没有将id令牌传递给API,那么什么保证访问令牌是安全的并且可以用于验证用户?否则,它似乎失去了使用OIDC而不是OAuth的好处.
openid-connect ×10
keycloak ×2
oauth-2.0 ×2
openid ×2
adfs ×1
android ×1
asp.net-mvc ×1
auth0 ×1
blazor ×1
cookies ×1
fastapi ×1
github-api ×1
oauth ×1
owin ×1
python-3.x ×1
security ×1
spring-boot ×1