标签: auth0

如何使用 Flutter 通过 Auth0 进行安全注销?

我已经阅读了这篇关于如何开始在 Flutter 中使用 Auth0 的文章。

作者写道:“ ……完整的安全注销超出了本文的范围”。

文章中的注销方法是这样的:

void logoutAction() async {
await secureStorage.delete(key: 'refresh_token');
setState(() {
  isLoggedIn = false;
  isBusy = false;
});
Run Code Online (Sandbox Code Playgroud)

}

我从设备上的安全存储中删除了刷新令牌。现在,我希望能够进行更完整的注销,该用户必须使用用户名和密码再次进行完整登录。目前,用户无需输入用户名和密码即可登录,我认为这是由于访问令牌保存在某处。如果这是由于访问令牌造成的,我如何从浏览器 cookie 或存储它的任何位置删除此访问令牌?

避免存储访问令牌的一种方法是添加promptValues: ['login]到登录方法中。这样做的问题是用户每次都必须登录,因此完全消除了存储的访问令牌的好处。再次强调,我希望用户能够“完全”注销,从 cookie 中清除访问令牌。

Future<void> loginAction() async {
setState(() {
  isBusy = true;
  errorMessage = '';
});

try {
  final AuthorizationTokenResponse result =
      await appAuth.authorizeAndExchangeCode(
    AuthorizationTokenRequest(
      AUTH0_CLIENT_ID,
      AUTH0_REDIRECT_URI,
      issuer: 'https://$AUTH0_DOMAIN',
      scopes: ['openid', 'profile', 'offline_access'],
      // promptValues: ['login']
    ),
  );

  final idToken = parseIdToken(result.idToken);
  final profile = await getUserDetails(result.accessToken); …
Run Code Online (Sandbox Code Playgroud)

access-token auth0 flutter appauth

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

在 NextJS getServerSideProps 中使用 Bearer token 装饰 api 请求

我正在使用axios拦截器用标头来装饰我的所有请求Authorization

@auth0/nextjs-auth0我通过使用 API 路由获取令牌/api/token

import auth0 from '@/libs/auth0/auth0';
import { AccessTokenResponse } from '@auth0/nextjs-auth0/dist/tokens/token-cache';
import { NextApiRequest, NextApiResponse } from 'next';

export async function getAccessToken(
  req: NextApiRequest,
  res: NextApiResponse
): Promise<AccessTokenResponse> {
  const tokenCache = auth0(req).tokenCache(req, res);
  return tokenCache.getAccessToken();
}

export default async function token(
  req: NextApiRequest,
  res: NextApiResponse
): Promise<void> {
  try {
    const { accessToken } = await getAccessToken(req, res);
    res.status(200).end(accessToken);
  } catch (error) {
    res.status(error.status || 500).end(error.message);
  }
}
Run Code Online (Sandbox Code Playgroud)

api …

session jwt auth0 next.js

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

AWS 用户无权访问此资源

我是 AWS API Gateway 和 Lambda 的新手,我想知道是否有人可以提供帮助?

在此输入图像描述

  • 我使用 Auth0 生成一个访问令牌,它适用于邮递员,为第一个 lambda 函数调用返回所有正确的 JSON 数据

  • 当我在邮递员上调用第二个 lambda 函数时,它表示用户没有获得此资源的授权:

"Message": "用户无权访问此资源"

403 Forbidden
Run Code Online (Sandbox Code Playgroud)

这仅持续 5 分钟,然后我可以在 Postman 上调用第二个函数,但无法再调用第一个函数并出现相同的错误。

关于如何解决这个问题的任何想法

谢谢!

amazon-web-services postman aws-lambda auth0 aws-api-gateway

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

使用 Cypress 进行 Auth0 身份验证

我正在尝试为 Cypress 创建登录命令,并注意到他们关于如何执行此操作的博客与Auth0 React SDK的预期值不匹配。看起来他们使用了自定义的 Express 应用程序来处理登录,而不是使用 SDK 来处理登录(根据官方 Auth0 文档)。

Cypress官方文档生成了一个本地存储键值对,如下所示。

const item = {
        body: {
          decodedToken: {
            claims,
            user: { ... },
            audience,
            client_id,
          },
        },
        expiresAt: exp,
      }

window.localStorage.setItem('auth0Cypress', JSON.stringify(item))
Run Code Online (Sandbox Code Playgroud)

然而,由 Auth0 React SDK 创建的生成的内容类似于:

const item = {
      body: {
        access_token,
        audience,
        client_id,
        decodedToken: {
          claims,
          user: { ... },
          encoded,
          header
        },
        expires_in,
        id_token,
        scope,
        token_type
      },
      expiresAt: exp
    }

window.localStorage.setItem(`@@auth0spajs@@::${client_id}::${audience}::${scope}`, JSON.stringify(item))
Run Code Online (Sandbox Code Playgroud)

我能够使https://${auth)_domain}/oauth/token请求正常工作,但是无法弄清楚如何从响应中获取数据,以使其适合 Auth0 React SDK 想要的数据结构。 …

javascript reactjs auth0 cypress

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

Angular - auth0 AuthHttpInterceptor 未将令牌附加到请求

长话短说,我遇到了 auth0 的 AuthHttpInterceptor 类实际上没有将令牌附加到任何传出请求的问题。

我一直在关注本教程系列,以便在简单的 Flask 和 Angular 应用程序中设置 auth0。我遵循 Flask 组件,并设置了一个简单的端点来从数据库中检索一些数据。请注意,@requires_auth装饰器与教程中的装饰器完全相同:

@app.route("/api/v1/members", methods=["GET"])
@requires_auth
def get_all_members():
    # Pagination Logic
    page_num, page_size = 1, 10
    if request.args.get('pn'):
        page_num = int(request.args.get('pn'))
    if request.args.get('ps'):
        page_size = int(request.args.get('ps'))
    page_start = (page_size * (page_num - 1))

    return_data = []
    for member in members.find().skip(page_start).limit(page_size):
        # Convert all IDs into strings
        member = convert_member_ids(member)
        return_data.append(member)
    return make_response(jsonify(return_data), 200)
Run Code Online (Sandbox Code Playgroud)

这不是将受到限制的实际端点,我只是保护此页面以测试身份验证是否有效。

在 Angular 中,这是由检索数据并将其显示在网页上的组件使用的:

export class MembersComponent implements OnInit {

  constructor(private webService: WebService) …
Run Code Online (Sandbox Code Playgroud)

authentication flask auth0 angular

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

如何在 RTK 查询中访问 getTokenSilently() auth0?

我对使用 RTK 查询完全陌生,我之前创建了应用程序,但没有身份验证,一切正常,现在我想使用 Auth0 添加身份验证,但我无法访问我添加getTokenSilently() PS 的任何文件。getTokenSilently 是 {token} 感谢您的帮助

export const myApi = createApi({
  reducerPath: "points",
  baseQuery: fetchBaseQuery({
    baseUrl: "/",
    prepareHeaders: (headers, { getState }) => {
      const token = getState()
      if (token) {
        headers.Authorization = `Bearer ${token}`
      }

      return headers
    },
  }),
  endpoints: builder => ({
    getPoints: builder.query({
      query: () => `/`,
    }),
  }),
})

export const { useGetPointsQuery } = myApi
Run Code Online (Sandbox Code Playgroud)

javascript auth0 redux-toolkit rtk-query

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

Auth0 端点“api/auth/me”在 Next.js 应用程序中返回 404 错误

我已完成以下教程以将我的 Next.js 应用程序与 Auth0 集成。我可以很好地登录和注销,但是当登录后尝试在页面上显示用户信息时,无法返回user对象。user我已确保使用我的应用程序的密钥渲染对象或 env.local 文件的 Profile.js 页面没有任何问题。

经过进一步检查,我注意到浏览器控制台中出现错误,内容为:Failed to Load Resource ... 404 Not Found: http://localhost:3000/api/auth/me

这个错误让我有一种直觉,因为我修改了 next.config.js 中的基本路径,所以我的 next.js 应用程序和 Auth0 之间的映射存在差异:

module.exports = {
  basePath: '/my_path',

  webpack: (config) => {
    return config
  },

  env: {
  },

  publicRuntimeConfig: {
    BACKEND_API_URL: process.env.BACKEND_API_URL,
    CONSENT_COOKIE_NAME: 'ConsentCookie'
  },
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将我的基本路径添加到user返回对象的端点中?最终结果看起来像:https://localhost:3000/my_path/api/auth/me

我不能 100% 确定这会解决我user正确返回对象的问题,因此我愿意接受任何其他建议,并愿意在我的应用程序中添加有关特定文件的更多上下文。


编辑:在 Auth0 论坛(链接)上提出这个问题后,有人向我指出了这个链接,这是另一个示例 Next.js Auth0 示例应用程序,只不过他们用 TypeScript(我不熟悉)编写了前端。他们正在操纵UserContext对象并重置ProfileURL,这就是我所追求的;那么与此等效的 JavaScript …

javascript typescript auth0 next.js auth0-connection

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

如何获取 jwt auth0 和 go Fiber 的解码令牌?

  1. 我使用 next.js auth0 和自定义 golang api 后端,但在后端获取解码令牌时遇到问题。
  2. 在前端方面,我遵循了本教程 - https://auth0.com/docs/quickstart/webapp/nextjs/01-login
  3. 我成功地将 accessToken 发送到我的后端 API
  4. 在后端,我遵循了本教程 - https://auth0.com/docs/quickstart/backend/golang/01-authorization
  5. 中间件已成功验证令牌

auth0 实现的中间件示例

func EnsureValidToken(next http.Handler) http.Handler {
    // EnsureValidToken is a middleware that will check the validity of our JWT.
    err := godotenv.Load()
    if err != nil {
        log.Fatal("Error loading .env file")
    }
    issuerURL, err := url.Parse("https://" + os.Getenv("AUTH0_DOMAIN") + "/")
    if err != nil {
        log.Fatalf("Failed to parse the issuer url: %v", err)
    }

    provider := jwks.NewCachingProvider(issuerURL, 5*time.Minute)

    jwtValidator, err := …
Run Code Online (Sandbox Code Playgroud)

go auth0 go-fiber

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

这是一个安全的身份验证流程(使用 Auth0 和 SvelteKit)吗?

由于目前没有适用于 SvelteKit 的 Auth0 SDK,因此当我打算将 Auth0 合并到我的 SvelteKit 应用程序中(包括服务器端身份验证)时,我正在学习(或至少尝试学习)有关身份验证的知识,这比我最初的意图要多得多。该文档有点令人困惑(或者可能它只是很大,或者可能我只是不那么聪明),所以我希望在这里描述我的身份验证流程以供批评(希望这对将来的其他人有帮助) )。

\n

我已经阅读了这篇关于 SPA auth以及Auth0 教育产品的精彩文章。但我仍然不确定我是否正确地将这些点连接起来。这是我的流程。所有这一切仅通过 SSL 发生。

\n
    \n
  1. 我使用他们的客户端 SDK ( @auth0/auth0-spa-js )在客户端创建一个 Auth0 客户端。该客户端通过 Auth0 弹出窗口执行身份验证。
  2. \n
  3. 一旦通过身份验证,一切都会在客户端按预期运行。但如果我想在服务器端控制对路由的访问,我需要将信息返回到服务器。所以...
  4. \n
  5. 身份验证后,Auth0 创建一个 ID 令牌(签名的 JWT),该令牌存储在浏览器的本地存储中。我将其保存为会话 cookie(SameSite=strict; HTTPOnly; Secure;设置了选项),以便它通过路由授权请求传递回服务器。
  6. \n
\n

所以让我在这里暂停一下...我明白(至少根据一些内容,包括上面链接的 Auth0 教育视频)ID 令牌不应该用于身份验证,并且永远不应该被传递。这就是访问令牌的用途。然而,在这种情况下,交换都是第一方(我的客户端,我的服务器),我的理解是“可以”。

\n

然而,Auth0 SDK 本身并没有设置 cookie,这确实让我感到紧张。这让我怀疑我是否做错了\xe2\x84\xa2。

\n
    \n
  1. 在服务器上,我使用公钥验证 id_token,然后可以根据需要在后端保存用户详细信息等,并允许访问适当的路由(hooks.server.js在我的 SvelteKit 应用程序中通过)。

    \n
  2. \n
  3. 当用户注销或令牌过期时,cookie 将被删除。

    \n
  4. \n
\n

(顺便说一句,我还没有弄清楚如何在 ID 令牌过期时刷新它,因为 Auth0 客户端 SDK 似乎永远不会更新浏览器存储中的 ID 令牌,即使它已过期。)

\n …

access-token auth0 sveltekit

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

如何获取所有Auth0用户的列表

我想从Java API(auth0客户端)获取Auth0用户列表。我可以做吗?基于Java + Spring Security的API。我试图用RestTemplate做到这一点:

List findAllUsers(){
    String idToken = RestService.getIdToken()
    HttpHeaders headers = new HttpHeaders()
    headers.set("Authorization", "Bearer $idToken");
    List users = []
    try{
        ResponseEntity entity = restTemplate.exchange(issuer+"api/v2/users", HttpMethod.GET, new HttpEntity<Object>(headers), List)
        users = entity.getBody()
    } catch (HttpClientErrorException e){
        e.printStackTrace()
    }
    return users
}
Run Code Online (Sandbox Code Playgroud)

但是我正在获得403禁止状态。

java spring-security auth0

4
推荐指数
1
解决办法
3294
查看次数