标签: auth0

如何在不添加特定代码的情况下处理auth0 403错误(Retrofit/okhttp/RxAndroid)

我正在使用Auth0,它给了我一个JWT(json web令牌)和一个refreshtoken.我在http标头中使用此JWT与我的后端进行通信.

403当它确定JWT已经过期时,它可能会发生,服务器给我一个.在这种情况下,我可以让Auth0使用refreshtoken向我发出一个新的JWT.这意味着我调用Auth0后端,将它传递给refreshtoken,它给了我一个新的JWT,然后我可以在我的请求中使用它.

我的问题是,如何在我的所有网络代码中有效地编写此行为?我将有几个端点可以交谈,他们都可以返回403.

我想我应该首先制作一个拦截器,将JWT添加到所有请求中.

然后应该有检测403的行为,静静地对Auth0进行网络调用,检索新的JWT.然后应该再次尝试原始请求,并在其标题中添加新的JWT.

所以我更希望将403处理到我的其他代码看不到的地方,并且绝对不必在任何地方重写它.

任何关于如何实现这一点的指示将不胜感激.

-

要清楚,我基本上是在寻找如何使用RxAndroid Observables实现这一目标的指针.当某个Observable找到403时,它应该"注入"一个新的网络呼叫.

android rx-java retrofit okhttp auth0

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

Auth0和React的CORS问题

我目前正在尝试在我的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?

node.js cors reactjs auth0

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

锁定Auth0 for android在验证时不返回UserProfile

我正在使用Lock在我的Android App中为用户提供登录功能.

这是我的代码:私人锁定锁;

private LocalBroadcastManager broadcastManager;

private BroadcastReceiver authenticationReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        String idToken = intent.getStringExtra("com.auth0.android.lock.extra.IdToken");
        String tokenType = intent.getStringExtra("com.auth0.android.lock.extra.TokenType");
        Log.i(TAG, "User  logged in with " + idToken + " "+ tokenType);
    }
};

//Not sure use of this callback  though its not being called anytime.
private LockCallback callback = new AuthenticationCallback() {
    @Override
    public void onAuthentication(Credentials credentials) {
        Log.d(TAG, "Authenticated");
    }

    @Override
    public void onCanceled() {
        Log.d(TAG, "Authentication cancelled");
    } …
Run Code Online (Sandbox Code Playgroud)

android locking broadcastreceiver auth0

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

Auth0使用Graphcool进行通用登录?

我正在尝试使用Graphcool,Apollo和React应用程序设置Auth0的通用登录.我的网站是一个静态托管Netlify的SPA.

我正在使用Graphcool的官方Auth0模板:https://github.com/graphcool/templates/tree/master/auth/auth0

但是,我在官方文档中找不到太多细节,所以我遵循本教程:https://medium.com/@quiaro/authentication-inside-a-graphcool-service-using-auth0-5056806d02f0

我有一个由登录组件调用的auth组件:

import React from 'react';
import auth0 from 'auth0-js';

export default class Auth {
    auth0 = new auth0.WebAuth({
        domain: 'MY-SITE.auth0.com',
        clientID: 'MY-CLIENT-ID',
        redirectUri: 'http://localhost:3000/callback',
        audience: 'https://MY-SITE.auth0.com/userinfo',
        responseType: 'id_token',
        scope: 'openid email',
    });

    login() {
        this.auth0.authorize();
    }
}

import Auth from './Auth';
class Login extends React.Component {
    render() {
        const auth = new Auth();
        auth.login();
        return (
            // Login message
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,这将我带到Auth0的页面,我可以登录,之后我被重定向回我的网站,并将参数添加到网址:

http://localhost:3000/callback#id_token=LONG-ID-TOKEN&state=STRING
Run Code Online (Sandbox Code Playgroud)

如果我将LONG-ID-TOKEN粘贴到https://jwt.io/中,则信息似乎是正确的,并且表示签名有效:

标题:

{
  "typ": "JWT", …
Run Code Online (Sandbox Code Playgroud)

auth0 graphcool

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

Auth0 - 禁用用户配置文件缓存

如何在 Auth0 中禁用用户配置文件缓存?

我已经能够更新用户配置文件 user_metadata。但问题是,Auth0 缓存了用户配置文件,因此只有在用户注销然后重新登录后才会看到此更新。这是一个问题,因为我不想总是强迫用户每次打开我的应用程序时都登录。我希望应用程序会记住会话,但在应用程序打开时仍会查询用户信息数据。缓存使这成为不可能。

显然,这是由于“用户配置文件:深入详细信息”中记录的 auth0 缓存所致。

但是,同一份文件指出“您可以通过 Auth0 仪表板或管理 API 删除用户的缓存配置文件。” 我希望在更新 user_metadata 时删除 userinfo 缓存(最好是针对特定用户),但我一直无法在 Management API 中找到有关如何删除 userinfo 缓存的任何信息。

javascript caching auth0

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

angular-jwt如何在没有秘密的情况下解码我的JWT?

Auth0团队创建了一个名为"angular-jwt"的东西,它有一个jwtHelper类.这个东西成功地解码了一个本地JWT而没有我在服务器上使用的秘密.这怎么发生的?如果它们不安全,那么使用秘密签名/加密它们有什么意义呢?

加密令牌的服务器上的函数(使用"jsonwebtoken"):

function createToken (user) {
    return jwt.sign(_.omit(user, 'password'), config.secret, { expiresInMinutes: 60*5 });
}
Run Code Online (Sandbox Code Playgroud)

来自客户的代码:

angular
    .module('sample.home', [
        'ui.router',
        'angular-storage',
        'angular-jwt'
    ])
    .config(function ($stateProvider) {
        $stateProvider
            .state('home', {
                url: '/',
                controller: 'HomeCtrl',
                templateUrl: 'modules/home/home.html',
                data: { requiresLogin: true }
            })
    })
    .controller('HomeCtrl', function homeController ($scope, $http, store, jwtHelper) {

        $scope.jwt = store.get('jwt');
        $scope.decodedJwt = $scope.jwt && jwtHelper.decodeToken($scope.jwt);

    });
Run Code Online (Sandbox Code Playgroud)

这是完整示例的链接: http://github.com/auth0/ang ...

node.js express jwt express-jwt auth0

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

Auth0 - 用用户信息丰富数据

我需要我的API来返回包含一些用户信息的对象.例如: api/comment/123需要返回:

{
    id: 123,
    author: {
         id: 'googleblahblah|123456789',
         name: 'James Bond'
    }
}
Run Code Online (Sandbox Code Playgroud)

通常我会加入用户和评论表,虽然在这种情况下我不能.我的应用程序的数据库存储用户ID,但名称(和其他用户的东西)存储在Auth0中.

显然,在每次API调用中对Auth0进行API调用以"丰富"对象是不可信的.

我是否在我的应用服务器上缓存所有/一些用户信息?在API结果中只有用户ID并让客户端丰富数据?

人们如何处理这个问题?

identity node.js jwt auth0

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

React 中具有静默刷新的隐式流

背景

我正在我的 React 应用程序中测试隐式流身份验证,并尝试实现所谓的 静默刷新功能,在用户登录时,我定期要求一个新的访问令牌,而无需要求他提供新的授权。

以下是 Flow 模式Auth0 Tenant,在我的例子中,是 Spotify:

在此处输入图片说明

虽然使用隐式授权的 SPA(单页应用程序)不能使用刷新令牌,但还有其他方法可以提供类似的功能:

  • prompt=none调用/authorize端点时使用。用户不会看到登录或同意对话框。

  • /authorize从隐藏的 iframe调用并从父框架中提取新的访问令牌。用户不会看到重定向发生。


另一种方法是实现类似包axios-auth-refresh 的东西,一个库

帮助您通过axios拦截器实现授权的自动刷新。当原始请求失败时,您可以轻松拦截原始请求,刷新授权并继续原始请求,无需任何用户交互。

用法

import axios from 'axios';
import createAuthRefreshInterceptor from 'axios-auth-refresh';

// Function that will be called to refresh authorization
const refreshAuthLogic = failedRequest => axios.post('https://www.example.com/auth/token/refresh').then(tokenRefreshResponse => {
    localStorage.setItem('token', tokenRefreshResponse.data.token);
    failedRequest.response.config.headers['Authorization'] = 'Bearer ' + tokenRefreshResponse.data.token;
    return Promise.resolve();
});

// Instantiate the interceptor (you can chain it as …
Run Code Online (Sandbox Code Playgroud)

spotify reactjs auth0 axios refresh-token

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

在使用 Auth0 的 React Native 项目中找不到名称为“compile”的配置

自从我将物理设备连接到我的计算机来测试我的 React Native 项目后,我就开始遇到这个问题。在物理设备出现之前,相同的代码无需任何更改即可在我的计算机上正常运行,并且我能够在 Android 模拟器上安装并测试它。

现在,我不断收到以下错误,并且应用程序无法构建。错误是:

配置项目“:react-native-auth0”时出现问题。

未找到名称为“compile”的配置。

错误指向\node_modules\react-native-auth0\android\build.gradle包含以下代码的文件:

task androidJavadoc(type: Javadoc) {
        source = android.sourceSets.main.java.srcDirs
        classpath += files(android.bootClasspath)
        classpath += files(project.getConfigurations().getByName('compile').asList()) // <-- The error is pointing to this line
        include '**/*.java'
    }
Run Code Online (Sandbox Code Playgroud)

正如我所说,使用 Android 模拟器在我的笔记本电脑上一切正常。自从连接和配置物理设备后,我什至无法再构建项目。

知道问题是什么以及如何解决它吗?

android auth0 react-native

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

JWT 集不包含任何可用的密钥

在使用 fastapi 的 okta 应用程序设置 Auth0 身份验证时,我们收到以下错误,

jwt.exceptions.PyJWKSetError: The JWK Set did not contain any usable keys
Run Code Online (Sandbox Code Playgroud)

我们遵循以下链接中详细说明的指南来使用 auth0 实施快速 api 授权。

https://auth0.com/blog/build-and-secure-fastapi-server-with-auth0/

以下代码用于验证创建的令牌。给定的错误出现在验证函数的第一个 try 块中。

class VerifyToken():
"""Does all the token verification using PyJWT"""
def __init__(self, token):
    self.token = token
    self.config = set_up()
    print(self.config)
    # This gets the JWKS from a given URL and does processing so you can
    # use any of the keys available
    jwks_url = f'https://{self.config["DOMAIN"]}/.well-known/jwks.json'
    self.jwks_client = jwt.PyJWKClient(jwks_url)
def verify(self):
    # This gets the 'kid' …
Run Code Online (Sandbox Code Playgroud)

okta auth0 fastapi

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