我正在使用React创建一个前端,并使用Node创建后端.我想使用Auth0 Lock管理用户信息- 向API发送带有每个请求的JWT.
如果我需要做以下事情之一怎么办?
Auth0唯一标识符user_id不是整数,因此不能用作ID /密钥.我如何在服务器端用户存储上处理这个问题?
我是否在每个API请求上阅读JWT,确定该用户是否存在,然后创建新用户(如果不存在),或者将其与预先存在的用户相关联.在每个API请求上检查用户数据库是否有效?
我不确定如何使用基于JWT的API和Auth0处理一般流程.
编辑:
经过一番研究和反思后我的想法:Auth0的唯一用户标识符由他们提供user_id.这里的问题是它不是整数.因此,它不应该用作users数据库中表的键.
看起来好像你不应该在每个请求上检查用户数据库,但这可能是不正确的.一个想法是在初始登录时回调到后端,如果该帐户不存在,则创建它,如果该帐户存在,则继续.然后在用户登录前端后,在每个后续请求中信任Auth0 JWT(如果它在后端验证).
从我在网上看到的这个过程的极少描述来看,我所描述的方式似乎是正常的方式.但在某些情况下它没有意义.如果用户被禁止怎么办?他们仍然可以使用活动的JWT访问服务器功能,直到它由于时间过期而到期.
因此,如果在每个API请求上检查用户存储是正常/高效的,那么如何将Auth0的字符串id user_id与数据存储区中的整数ID相关联以进行查询?我正在使用SQL变体.
我已将我的应用程序从角度5升级到角度6.我现在收到以下错误.
Uncaught ReferenceError: global is not defined
at Object../node_modules/auth0-lock/lib/utils/cdn_utils.js (cdn_utils.js:13)
Run Code Online (Sandbox Code Playgroud)
"angular2-jwt":"^ 0.2.3","auth0-js":"^ 9.5.1","auth0-lock":"^ 11.6.1",
Auth0看起来像一个非常有前途的用户管理解决方案,但我很好奇它是否允许您导出用户数据库.
这是一个重要特征,因为:
从文档>将用户导入到Auth0,我发现有一种方法可以导入用户(无论如何都可以按需获取密码).我可以看到他们使用bcrypt进行密码散列(至少默认情况下).但我没有看到任何提及出口用户.
我使用Auth0来托管我的所有用户数据.我也有自己的后端,我希望有一个Users表,它将我的数据库生成映射userId到Auth0 user_id.注册时,我在两个流程之间犹豫不决:
user_id.POST /users(公共端点)以创建新用户user_id.user_id,因此db在user_id和我之间进行查找userId.POST /users我的后端.此调用将生成我的数据库userId并将其发送回Auth0.userId放到Auth0中user_metadata.user_metadata将包含在JWT中,因此对我的后端获取资源的所有调用都将包含db userId(不需要额外的查找).我觉得2更坚固.还有其他注册流程吗?一些auth0客户是否使用与我的#2类似的流程?我在他们的文档中找不到多少.
我使用的护照-openidconnect策略效果很好,但是会话的有效期很短,只有3600秒,我认为它是不会更改的。
我会使用刷新令牌来获取另一个令牌ID吗?
如果我这样做,该在哪里添加这种逻辑呢?https://github.com/passport/express-4.x-openidconnect-example/blob/master/server.js
我正在尝试在 react-admin v3 应用程序中使用 Auth0 实现身份验证。我需要实现一个authProvider与 Auth0 对话的对象。这听起来像是应该在某处可用的东西,但我能找到的最接近的是https://github.com/alexicum/merge-admin/blob/master/src/Auth/index.js,它大约有 2 岁(从那时起,SDK 发生了变化)。
是否有 Auth0 authProvider 可以重用的地方,还是我必须自己实现?
谢谢!
我使用 Auth0 作为使用 React 的 SPA 的身份验证提供程序。我遵循了他们博客中的Auth0 react 教程和这个更详细的教程。
我目前只使用电子邮件/密码身份验证。并且身份验证按预期进行登录/注销,检索用户信息等。
但是,当我刷新页面时,isAuthenticated来自的值useAuth0总是返回 false。即使在isLoading解析为 true 之后,我也必须再次登录。
奇怪的是,这种行为不会在 Chrome 或 Firefox 上发生。它在 Brave 和 Safari 上失败。
我在 Auth0(另一个有类似问题的人)的论坛帖子中注意到,Auth0Provider应该authorize使用 拨打电话prompte=none,确实如此。它还202在页面加载后不久返回成功(但不会更改isAuthenticated为true)。此调用还设置了一个 cookie auth0.is.authenticated=true。
authorize?client_id=VALUE&redirect_uri=VALUE&scope=openid%20profile%20email&response_type=code&response_mode=web_message&state=VALUE&nonce=VALUE&code_challenge=VALUE&code_challenge_method=S256&prompt=none&auth0Client=VALUE
Run Code Online (Sandbox Code Playgroud)
这是我检查身份验证状态的路线。该组件Auth0ProviderWithHistory按照 Auth0 教程中的建议封装在代码中。
export default function Routes() {
const { isLoading, isAuthenticated } = useAuth0()
const getDashboard = () => {
//determine which dashboard to return …Run Code Online (Sandbox Code Playgroud) 你好,我一直在网上搜索,但收效甚微,我希望 SO 的有人能够提供帮助。
目前,我的 Spring Boot API(版本 2.5.4)接受 Auth0 提供的 JWT。现在我在那里创建了第二个租户,我正在努力了解如何支持两个或更多发行者 uri。
这是我目前正在做的事情:
@Configuration
@EnableWebSecurity(debug = false)
@EnableGlobalMethodSecurity(
securedEnabled = true,
jsr250Enabled = true,
prePostEnabled = true
)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Value("${auth0.audience}")
private String audience;
@Value("${spring.security.oauth2.resourceserver.jwt.issuer-uri}")
private String issuer;
@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("http://localhost:3010"));
configuration.setAllowedMethods(Arrays.asList("GET", "POST"));
configuration.setAllowCredentials(true);
configuration.addAllowedHeader("Authorization");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and() …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试在我的NodeJS + React App中实现Auth0.虽然我有一个很大的问题,但本教程非常有用且有用.每当我尝试通过Auth0登录/注册时,我都会得到
XMLHttpRequest无法加载 https://XYZ.eu.auth0.com/usernamepassword/login.对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许来源' http:// localhost:3000 '访问.对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许来源' http:// localhost:3000 '访问.
所以我粗略地理解这意味着什么.但我只是不知道在哪里设置所需的选项以允许此请求到Auth0.在服务器端?在浏览器代码中?
最好的祝福
编辑:正如RodrigoLópezDato指出的那样,我可以在我的应用程序中编写Origins:https://manage.auth0.com/#/applications
我在本地开发时应该把它放在那里?我的IP?
如何在 Auth0 中禁用用户配置文件缓存?
我已经能够更新用户配置文件 user_metadata。但问题是,Auth0 缓存了用户配置文件,因此只有在用户注销然后重新登录后才会看到此更新。这是一个问题,因为我不想总是强迫用户每次打开我的应用程序时都登录。我希望应用程序会记住会话,但在应用程序打开时仍会查询用户信息数据。缓存使这成为不可能。
显然,这是由于“用户配置文件:深入详细信息”中记录的 auth0 缓存所致。
但是,同一份文件指出“您可以通过 Auth0 仪表板或管理 API 删除用户的缓存配置文件。” 我希望在更新 user_metadata 时删除 userinfo 缓存(最好是针对特定用户),但我一直无法在 Management API 中找到有关如何删除 userinfo 缓存的任何信息。
auth0 ×10
javascript ×4
reactjs ×4
node.js ×2
angular ×1
auth0-lock ×1
caching ×1
cors ×1
java ×1
jwt ×1
onelogin ×1
passport.js ×1
react-admin ×1
spring ×1
spring-boot ×1