标签: auth0

使用Auth0在django rest框架上实现JWT

我正在尝试在Django REST框架api上实现JWT身份验证,但是在解码来自令牌的签名时遇到了问题Auth0.我正在使用这个djangorestframework-jwt包.在django设置中,我已设置JWT_SECRET_KEYJWT_AUDIENCE我的Auth0凭据,并尝试使用密钥的base64解码版本(Auth0声称密钥默认编码).我可以使用像jwt.io这样的在线工具成功解码其中一个传入的令牌,我甚至可以使用在终端中解码令牌

jwt.decode( token, base64.b64decode(JWT_SECRET_KEY.replace("_","/").replace("-","+")), JWT_AUDIENCE) 
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,当我尝试允许djangorestframework-jwt解码令牌时,我每次都会在解码签名时出错.我知道这可能对某个问题有点过于具体,但希望之前处理过这个堆栈的人可以帮我一臂之力.

python django jwt django-rest-framework auth0

5
推荐指数
0
解决办法
1091
查看次数

Angular2 System.config映射返回404错误

我试图使用索引文件中的system.config从我的angular2项目中的node_modules映射此Auth0模块.但我在浏览器控制台中收到404错误

索引文件

<!-- 2. Configure SystemJS -->
<script>
  System.config({
    packages: {        
      app: {
        format: 'register',
        defaultExtension: 'js'
      },
      "/angular2-jwt": {
      "defaultExtension": "js"
      }        
    },
    map: {
      "angular2-jwt": "node_modules/angular2-jwt/angular2-jwt"
    }
  });
  System.import('app/bootstrap')
        .then(null, console.error.bind(console));
</script>
Run Code Online (Sandbox Code Playgroud)

控制台错误如下

在此输入图像描述

我已将脚本包含在索引文件中,如下所示

<script src="//cdn.auth0.com/js/lock-9.0.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

按照auth0网站上的node.js/angular 2教程

我正在尝试从Appcomponent.ts的模板加载登录按钮

Appcomponent.ts

import {Component} from 'angular2/core';
import {Router, RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router';
import {AuthHttp,AuthConfig, tokenNotExpired, AUTH_PROVIDERS} from 'angular2-jwt';

import {HomeComponent} from '../home/HomeComponent'
import {AboutComponent} from '../about/AboutComponent'

declare var Auth0Lock;

@RouteConfig([
    {path: 'app/', component: HomeComponent, as: 'Home'},
    {path: 'app/about', component: AboutComponent, …
Run Code Online (Sandbox Code Playgroud)

javascript auth0 angular

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

Angular 2 - 没有路由器提供商

我正在尝试将auth0与我的angular2应用程序集成,但我得到一个错误说:

    EXCEPTION: Error in ./AppComponent class AppComponent_Host - inline template:0:0BrowserDomAdapter.logError @ platform-browser.umd.js:937BrowserDomAdapter.logGroup @ platform-browser.umd.js:947ExceptionHandler.call @ core.umd.js:4389(anonymous function) @ core.umd.js:9890ZoneDelegate.invoke @ zone.js:332onInvoke @ core.umd.js:9245ZoneDelegate.invoke @ zone.js:331Zone.run @ zone.js:225(anonymous function) @ zone.js:591ZoneDelegate.invokeTask @ zone.js:365onInvokeTask @ core.umd.js:9236ZoneDelegate.invokeTask @ zone.js:364Zone.runTask @ zone.js:265drainMicroTaskQueue @ zone.js:497ZoneTask.invoke @ zone.js:437
    platform-browser.umd.js:937
    platform-browser.umd.js:937 Error: DI Exception
        at NoProviderError.BaseException [as constructor] (core.umd.js:4472)
        at NoProviderError.AbstractProviderError [as constructor] (core.umd.js:4602)
        at new NoProviderError (core.umd.js:4638)
        at ReflectiveInjector_._throwOrNull (core.umd.js:6532)
        at ReflectiveInjector_._getByKeyDefault (core.umd.js:6560)
        at ReflectiveInjector_._getByKey (core.umd.js:6523)
        at ReflectiveInjector_.get (core.umd.js:6332)
        at NgModuleInjector.get (core.umd.js:10386)
        at DebugAppView._View_AppComponent_Host0.createInternal (AppComponent.ngfactory.js:20)
        at …
Run Code Online (Sandbox Code Playgroud)

javascript auth0 angular

5
推荐指数
0
解决办法
3239
查看次数

JHipster和auth0,错误:auth未定义?

我已经运行了下面的教程,将JHipster与auth0集成在一起. https://auth0.com/blog/quicktip-use-jhipster/

当我点击下面的帐户登录选项时,任何帮助将不胜感激!

非常感谢,KieranH

错误:auth未定义打开@ http://127.0.0.1:8080/app/components/login/login.service.js:23:17 +更多(需要至少10个声誉才能发布更多2个链接).

authentication undefined angularjs jhipster auth0

5
推荐指数
0
解决办法
295
查看次数

缺少auth0的userInfo中的user_metadata

对于身份验证,我使用的是Auth0 AuthenticationApi.在Account Controller中,我需要获取user_metadata但它已丢失.获取user_metadata的任何替代方法?

AuthenticationApiClient client = new AuthenticationApiClient(new Uri($"https://{_auth0Options.Domain}/"));

               var authenticateResponse = await client.GetTokenAsync(new ResourceOwnerTokenRequest
                {
                    ClientId = _auth0Options.ClientId,
                    ClientSecret = _auth0Options.ClientSecret,
                    Scope = "openid",
                    Realm = _auth0Options.Connection,
                    Username = vm.EmailAddress,
                    Password = vm.Password
                });
                var user = await client.GetUserInfoAsync(authenticateResponse.AccessToken);
                if (user.UserMetadata != null)
                {
        // Giving error...any alternative to access the userMetaData ?
                }
Run Code Online (Sandbox Code Playgroud)

authentication model-view-controller oauth-2.0 auth0

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

Node.js(Express)中的Auth0中间件给出了错误:aggrinfo ENOTFOUND

我在Express API中使用中间件来针对auth0进行验证

const checkJwt = jwt({
    // Dynamically provide a signing key based on the kid in the header and the singing keys provided by the JWKS endpoint.
    secret: jwksRsa.expressJwtSecret({
        cache: true,
        rateLimit: true,
        jwksRequestsPerMinute: 5,
        jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json`
    }),

    // Validate the audience and the issuer.
    audience: process.env.AUTH0_AUDIENCE,
    issuer: `https://${process.env.AUTH0_DOMAIN}/`,
    algorithms: ['RS256']
});
Run Code Online (Sandbox Code Playgroud)

...

  server.use('/api', checkJwt, routes);
Run Code Online (Sandbox Code Playgroud)

它可以在我本地的开发机器上运行,但是当我在生产环境中运行它时,我得到:

Error: getaddrinfo ENOTFOUND undefined undefined:443
    at errnoException (dns.js:28:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
Run Code Online (Sandbox Code Playgroud)

我在生产环境和Mac开发环境中运行ubuntu 12。

linux node.js express auth0

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

Auth0 锁定组件未在带有容器选项的 React 中显示

(使用 React)我有一个/login路由和一个/signup显示LoginSignUp组件的路由。在我的Login组件中,我使用Auth0 的 Lock 组件来显示登录表单,并且我还使用container配置选项 让表单以我自己的方式显示,div而不是作为默认模式显示。

当我的Login组件第一次加载时(或在/login路由刷新后),Auth0 Lock 组件正确加载。我的问题是当我从/login路线导航到/signup路线然后返回/login路线时,Auth0 Lock 组件根本没有加载。检查页面时,我可以看到我的页面container div是空的。

在 Auth0 的 github 上发现了这个问题,其他人使用 Angular遇到了同样的问题,但他们的解决方案是设置auth.config.auth0lib.$containernullwhich 似乎不是一个好的解决方案。

javascript reactjs auth0

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

未捕获RangeError:仅在生产时超出最大调用堆栈大小

8月28日更新:下面完全相同的软件包配置,但zone.js 0.8.16不会产生任何错误.知道为什么吗?

编辑:我一直试图找出问题的来源.如果这是一个无限循环,它究竟发生了什么,但我无法破解polyfill或vendor中的代码.

我正在使用Firebase Hosting部署我的Angular应用程序.使用localhost进行编译和测试时,一切正常.但是当我在Firebase Hosting上部署时,我的实时站点永远无法绕过使用Auth0登录,在控制台中无休止地给出了同样的错误.如何确切地找出导致错误的原因?

Uncaught RangeError: Maximum call stack size exceeded
(anonymous) @ polyfills.70fc3f963669a0ddfcd2.bundle.js:1
o.(anonymous function) @ polyfills.70fc3f963669a0ddfcd2.bundle.js:1
(anonymous) @ vendor.bd83d2a24392414468c4.bundle.js:1
_makeRequest @ vendor.bd83d2a24392414468c4.bundle.js:1
_sendProcessedPayload @ vendor.bd83d2a24392414468c4.bundle.js:1
_send @ vendor.bd83d2a24392414468c4.bundle.js:1
_processException @ vendor.bd83d2a24392414468c4.bundle.js:1
_handleStackInfo @ vendor.bd83d2a24392414468c4.bundle.js:1
captureException @ vendor.bd83d2a24392414468c4.bundle.js:1
r @ vendor.bd83d2a24392414468c4.bundle.js:1
L @ polyfills.70fc3f963669a0ddfcd2.bundle.js:1
r @ vendor.bd83d2a24392414468c4.bundle.js:1
L @ polyfills.70fc3f963669a0ddfcd2.bundle.js:1
r @ vendor.bd83d2a24392414468c4.bundle.js:1
L @ polyfills.70fc3f963669a0ddfcd2.bundle.js:1
r @ vendor.bd83d2a24392414468c4.bundle.js:1
L @ polyfills.70fc3f963669a0ddfcd2.bundle.js:1
r @ vendor.bd83d2a24392414468c4.bundle.js:1
L @ polyfills.70fc3f963669a0ddfcd2.bundle.js:1
r @ vendor.bd83d2a24392414468c4.bundle.js:1
L @ polyfills.70fc3f963669a0ddfcd2.bundle.js:1
r …
Run Code Online (Sandbox Code Playgroud)

firebase-hosting auth0 zonejs angular-cli angular

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

如何在IAM角色的信任策略中检查自定义OpenID声明?

我正在使用auth0对用户进行身份验证,以接收包含以下声明的id令牌

"http://myapp.com/scope": "write"
Run Code Online (Sandbox Code Playgroud)

使用带有OpenID身份验证提供程序的Cognito身份池(即auth0),我能够成功获取临时凭据以访问aws服务.但是,我想根据上面的自定义声明限制对这些服务的访问.我认为正确的方法是编辑与我的身份池关联的信任策略,但我不确定如何在我的信任策略中添加条件来检查上述声明.

当前的默认信任策略是

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "us-east-2:078855cf-aa9b-400e-a762-dfcf27ec495c"
        },
        "ForAnyValue:StringLike": {
          "cognito-identity.amazonaws.com:amr": "authenticated"
        }
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

如何确保只有具有auth0 "write"范围的用户才能访问我的s3服务?

更新:

我能够通过避免认知身份池将原始id_token传递给aws.但是,auth0强制我的自定义声明被命名空间"http://mywebsite.com".这是一个问题,因为IAM在我的情况下不允许多个冒号.我需要添加条件

"ForAnyValue:StringLike": {
    "food-flick.auth0.com/:https://foodflick.com/scope": "write:rests"
 }
Run Code Online (Sandbox Code Playgroud)

但IAM不允许它,Auth0强迫我命名我的声明.我能做什么?我可以将我的范围存储在标准声明中,但这会产生误导.我可以将访问令牌而不是我的id_token传递给IAM吗?如果是这样,在给定值数组时,如何更改信任策略以检查适当的aud值?

amazon-s3 amazon-web-services amazon-iam amazon-cognito auth0

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

ASP.NET Core 2.1 Cookie身份验证似乎具有服务器相​​似性

我正在ASP.NET Core 2.1中开发一个应用程序,并在Kubernetes群集上运行它。我已经使用Auth0作为提供者,使用OpenIDConnect实现了身份验证。

这一切都很好。标有该[Authorize]属性的操作或控制器将匿名用户重定向到身份提供者,他们登录,重定向回来,而Bob是您的叔叔。

当我将部署扩展到2个或更多容器时,就会开始出现问题。当用户访问应用程序时,他们将登录,并根据回调过程中为它们提供服务的容器,身份验证是成功还是失败。即使在身份验证成功的情况下,当用户点击未授权的容器时,反复进行F5-ing操作也会最终重定向到身份提供者。

我对此的思路是,使用cookie身份验证,用户将cookie存储在浏览器中,并随每个请求一起传递,应用程序对其进行解码并获取JWT,然后从中获取声明,然后用户已认证。这使整个事情变得无状态,因此,不管为请求提供服务的容器如何,它都应该工作。但是,如上所述,它似乎并没有以这种方式实际工作。

我的配置Startup.cs如下所示:

services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    })
    .AddCookie()
    .AddOpenIdConnect("Auth0", options =>
    {
        options.Authority = $"https://{Configuration["Auth0:Domain"]}";

        options.ClientId = Configuration["Auth0:ClientId"];
        options.ClientSecret = Configuration["Auth0:ClientSecret"];

        options.ResponseType = "code";

        options.Scope.Clear();
        options.Scope.Add("openid");
        options.Scope.Add("profile");
        options.Scope.Add("email");

        options.TokenValidationParameters = new TokenValidationParameters
        {
            NameClaimType = "name"
        };

        options.SaveTokens = true;

        options.CallbackPath = new PathString("/signin-auth0");

        options.ClaimsIssuer = "Auth0";

        options.Events = new OpenIdConnectEvents
        {
            OnRedirectToIdentityProviderForSignOut = context =>
            {
                var logoutUri =
                    $"https://{Configuration["Auth0:Domain"]}/v2/logout?client_id={Configuration["Auth0:ClientId"]}";

                var postLogoutUri …
Run Code Online (Sandbox Code Playgroud)

c# openid-connect kubernetes auth0 asp.net-core

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