标签: auth0

如何正确处理JWT刷新?

我有一个Android应用程序.它与一个REST API开发的连接Jersey.我的REST端点由令牌保护.以下是我如何生成它们.

Algorithm algorithm = Algorithm.HMAC256(secret);
String token = JWT.create()
    .withClaim("userName","myusername)
    .withExpiresAt(expirationDate)
    .sign(algorithm);
Run Code Online (Sandbox Code Playgroud)

以下是我验证令牌的方法

public boolean validateTokenHMAC256(String token, String secret) throws UnsupportedEncodingException, JWTVerificationException
    {       
        Algorithm algorithm = Algorithm.HMAC256(secret);


        JWTVerifier verifier = JWT.require(algorithm) 
                .build(); //Reusable verifier instance
            DecodedJWT jwt = verifier.verify(token);

            Claim usernameClaim = jwt.getClaim("username");
            String username = usernameClaim.asString();
            System.out.println(username);


        return true;
    }
Run Code Online (Sandbox Code Playgroud)

在我的REST API中,我有一个过滤器,该过滤器检查每个请求以查看令牌是否原样.下面是代码.

@Secured
@Provider
@Priority(Priorities.AUTHENTICATION)
public class AuthenticationFilter implements ContainerRequestFilter{

    //private static String authorizationSecret = "ZXW24xGr9Dqf9sq5Dp8ZAn5nSnuZwux2QxdvcH3wQGqYteJ5yMTw5T8DBUJPbySR";

    public AuthenticationFilter()
    {
        System.out.println("test printing");
    }

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

java rest jersey jwt auth0

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

Auth0 - Django 和石墨烯

我目前正在将 Graphql 与 Django Graphene JWT 一起使用。我在后端使用 django。所有请求都由如下所示的令牌进行身份验证:

我有一个为 graphql 创建身份验证令牌的架构,目前看起来像这样:

class Mutation(accounts_manager.schema.Mutation, device_manager.schema.Mutation, graphene.ObjectType):
    token_auth = graphql_jwt.ObtainJSONWebToken.Field()
    verify_token = graphql_jwt.Verify.Field()
    refresh_token = graphql_jwt.Refresh.Field()
Run Code Online (Sandbox Code Playgroud)

我正在尝试查找文档并了解这将如何工作。

我有一个当前连接到 graphql api 的 reactjs webapp,现在我也在构建一个 react 本机应用程序来连接它。

他们的方式我认为 Auth0 只为每个用户保留一个令牌,然后通过 graphql 使用该令牌来验证 django?

我有点不知道它应该如何工作!

django jwt auth0 graphql graphene-python

7
推荐指数
0
解决办法
551
查看次数

将 auth0 与 keycloak 结合使用

我希望能够使用 auth0 作为身份提供者,因此通过 auth0 完成所有登录部分并使用 keycloak 作为授权管理器,因此通过 keycloak 完成所有用户权限管理。有什么办法可以做到这一点吗?

keycloak auth0

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

为什么我不应该在 IDP 上下文中使用 IdToken 作为不记名令牌?

我正在使用 IDP 平台(这里是 AWS Cognito,但可能是 Auth0、OKTA 或 Keycloak),我想知道为什么我不鼓励使用它ID Token作为授权令牌。

更具体地说,我不会使用将用户授权委托给第三方应用程序的资源服务器。我的 IDP 将允许我在不同的应用程序上 SSO 所有用户。这里没有授予的范围,只有每个服务将用于授予或拒绝对资源(如电子邮件、用户 ID 或角色)的访问的身份验证声明。

我知道我可以为我的应用程序提供id token,然后为我的用户创建一些会话。id token鉴于可以在每个应用程序的后端检查其签名,为什么我不应该将其本身用作无状态会话令牌?

如果我应该使用access token-id token我可以用角色替换范围吗?或者我应该如何理解非委托上下文中的范围(“用户自己使用应用程序,而不给予许可”与“用户将所有范围给予 SPA 前端,它本身就是一个应用程序”

顺便说一句,我正在通过前端的代码 PKCE 流恢复令牌。

authentication jwt openid-connect amazon-cognito auth0

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

如何将 auth0 访问令牌添加到react-apollo

我正在尝试在 React js 中向 apollo 客户端添加授权令牌以让用户登录...

\n

索引.js

\n
import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { ThemeProvider } from 'react-jss';\nimport Theme from 'resources/theme';\nimport Routes from 'routes';\nimport './index.css';\nimport * as serviceWorker from './serviceWorker';\nimport { Auth0Provider } from "@auth0/auth0-react";\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport ReactNotification from 'react-notifications-component'\nimport './components/orders/fonts/NotoSansJP-Regular.otf'\nimport 'react-notifications-component/dist/theme.css'\nimport { ApolloProvider , ApolloClient, InMemoryCache } from '@apollo/client';\nimport { useAuth0 } from "@auth0/auth0-react";\n\n\nconst client = new ApolloClient({\nuri: process.env.REACT_APP_API_BACK ,\nheaders: {\n  Authorization: `Bearer ${accessToken}` // doesn\xe2\x80\x99t work \n },\n  cache: …
Run Code Online (Sandbox Code Playgroud)

apollo reactjs auth0 react-apollo apollo-client

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

Auth0:访问令牌有效负载无效,JWT 使用 A256GCM 算法加密

我正在尝试设置一个 Vue3 SPA,后面有 NestJS API。我设置了 Auth0 租户和客户端以与 SPA 集成,并计划将生成的 JWT 发送到我的 API。在我的 SPA 中,我使用vue-auth0-plugin ,它在底层使用@auth0/auth0-spa-js 。

我已经成功使用 PKCE 流程设置了身份验证代码,直到我收到 id、访问和刷新令牌。但是,访问令牌出了问题,我无法理解为什么会发生这种情况。有效负载是无效的 JSON,并且令牌包含 2 个连续的.. 当我将令牌粘贴到 jwt.io 中时,标头解码如下:

{
  "alg": "dir",
  "enc": "A256GCM",
  "iss": "https://xyz.auth0.com/"
}
Run Code Online (Sandbox Code Playgroud)

我会期待:

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "w1-e..."
}
Run Code Online (Sandbox Code Playgroud)

据我所知,我尚未启用 JWT 加密(我使用向导来设置 SPA 客户端),有人可以向我指出我缺少什么吗?为了完整起见,这是我的身份验证请求的格式:

https://xyz.auth0.com/authorize
    ?client_id=REq...
    &redirect_uri=http%3A%2F%2Flocalhost%3A1337
    &scope=openid%20profile%20email
    &response_type=code
    &response_mode=query
    &state=a2...
    &nonce=bT...
    &code_challenge=GjSw...
    &code_challenge_method=S256
    &auth0Client=eyJu...
Run Code Online (Sandbox Code Playgroud)

提前谢谢了。

oauth-2.0 jwt vue.js auth0 vuejs3

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

无法找到 /oauth/device/code Auth0 Java API

是否有一个 API 可以通过 Auth0 Java API 获取设备代码,我们在 Go 中使用以下代码片段,问题是是否有标准 API 或者我们应该进行 HTTP 请求调用

url := "https://dev-foo.us.auth0.com/oauth/device/code"

payload := strings.NewReader("client_id=RO6N7mr&scope=openid&audience=https://dev-foo.us.auth0.com/api/v2/")

req, _ := http.NewRequest("POST", url, payload)
Run Code Online (Sandbox Code Playgroud)

java go auth0

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

AWS Cognito以Auth0作为SAML SSO的中间层,如何跳过重新登录

我\xe2\x80\x99m 使用AWS Cognito as User pool (for login) <> Auth0 as SAML-IDP (idp-initiated flow) (as Cognito does not support SAML IDP) <> and connecting to 3rd party SP.

\n

我有一个具有 AWS Cognito 登录机制的 Web 应用程序,并且我\xe2\x80\x99m 尝试将登录的客户重定向到第三方 URL(=SP,也需要登录,SAML)。

\n

我已设置 Auth0 来执行 SAML SSO,因为 Cognito 不支持它,并添加了 OpenID Connect 进行身份验证,以将现有用户与 Auth0 同步(AWS Cognito - 参见下图),这似乎运行良好(用户从我的设备同步)用户池与 Auth0/用户管理/用户)。

\n

当 i\xe2\x80\x99m 重定向登录用户时,我将它们重定向到 Auth0 身份提供商登录 URL(即dev-APP.us.auth0.com/samlp/SOME_APP?connection=AWSCognito:)

\n

i\xe2\x80\x99m 面临的问题是,第一次 - 用户需要再次登录(认知),尽管他已经登录了(见下图)。

\n

我试图跟踪重定向到 Auth0 提供商登录 URL 后发出的请求,看来 cognito 上的 /authorize URL …

saml amazon-web-services amazon-cognito auth0

7
推荐指数
0
解决办法
460
查看次数

如何将 Auth0 提供程序与 v6.4 中新的 createBrowsereRouter 一起使用?

我们正在迁移到 v6.4 并createRoutesFromElements按照文档的建议将我们的路由迁移到新createBrowserRouter路由器。

我们的设置看起来像这样

const router = createBrowserRouter(
  createRoutesFromElements(--> our routes go here <--)
);

root.render(
  <React.StrictMode>
    <ChakraProvider theme={theme}>
      <RouterProvider router={router} />
    </ChakraProvider>
  </React.StrictMode>
);
Run Code Online (Sandbox Code Playgroud)

Auth0 文档说 Auth0 提供程序应该嵌套在提供程序下。新路由器如何做到这一点?

我们尝试将身份验证提供程序包装在路由周围,createRoutesFromElements但不起作用。也尝试这样做,但我们收到错误。

<RouterProvider router={router} >
    <Auth0Provider />
</RouterProvider>
Run Code Online (Sandbox Code Playgroud)

有人可以帮我了解 Auth0 提供程序的放置位置吗?谢谢

reactjs auth0 react-router-dom

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

如何使React Router v6加载器仅在Auth0之后发送请求?

我正在尝试利用 React Router 加载器。实际上,除了一种情况之外,它的效果非常棒。

我用于Auth0 React SDK授权。我传递getAccessTokenSilentlyaxios interceptor所有 API 调用,标头中都有不记名令牌。在某些路由上,我以这种方式使用 React Router v6.4 中的加载器:

路由器

              {
                path: PATHS.rawMedia,
                element: <RawMediasPage />,
                loader: rawMediasLoader,
              }
Run Code Online (Sandbox Code Playgroud)

在我重新加载页面之前它工作得非常好。页面重新加载加载器在 Auth0 之前发送请求。在这种情况下,加载程序发送没有承载令牌的请求,并且从后端返回错误。

如何解决这个问题?高技能的人暗示我如何解决这个问题,但不幸的是我没那么好。据我了解,我需要在路由中进行<RouterProvider router={router} />App.tsx深入的处理,以便 Auth0 首先针对令牌触发......但我不明白如何实现它。

AuthProvider.tsx

export const AuthProvider = (): JSX.Element | null => {
  const navigate = useNavigate();
  if (!(domain && clientId)) {
    return null;
  }

  const onRedirectCallback = (appState: any) => {
    navigate(appState?.returnTo || window.location.pathname);
  };

  return (
    <Auth0Provider
      domain={domain} …
Run Code Online (Sandbox Code Playgroud)

reactjs auth0 react-router-dom

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