我有一个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) 我目前正在将 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?
我有点不知道它应该如何工作!
我希望能够使用 auth0 作为身份提供者,因此通过 auth0 完成所有登录部分并使用 keycloak 作为授权管理器,因此通过 keycloak 完成所有用户权限管理。有什么办法可以做到这一点吗?
我正在使用 IDP 平台(这里是 AWS Cognito,但可能是 Auth0、OKTA 或 Keycloak),我想知道为什么我不鼓励使用它ID Token作为授权令牌。
更具体地说,我不会使用将用户授权委托给第三方应用程序的资源服务器。我的 IDP 将允许我在不同的应用程序上 SSO 所有用户。这里没有授予的范围,只有每个服务将用于授予或拒绝对资源(如电子邮件、用户 ID 或角色)的访问的身份验证声明。
我知道我可以为我的应用程序提供id token,然后为我的用户创建一些会话。id token鉴于可以在每个应用程序的后端检查其签名,为什么我不应该将其本身用作无状态会话令牌?
如果我应该使用access token-id token我可以用角色替换范围吗?或者我应该如何理解非委托上下文中的范围(“用户自己使用应用程序,而不给予许可”与“用户将所有范围给予 SPA 前端,它本身就是一个应用程序”)
顺便说一句,我正在通过前端的代码 PKCE 流恢复令牌。
我正在尝试在 React js 中向 apollo 客户端添加授权令牌以让用户登录...
\n索引.js
\nimport 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) 我正在尝试设置一个 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)
提前谢谢了。
是否有一个 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) 我\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.
我有一个具有 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:)
i\xe2\x80\x99m 面临的问题是,第一次 - 用户需要再次登录(认知),尽管他已经登录了(见下图)。
\n我试图跟踪重定向到 Auth0 提供商登录 URL 后发出的请求,看来 cognito 上的 /authorize URL …
我们正在迁移到 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 提供程序的放置位置吗?谢谢
我正在尝试利用 React Router 加载器。实际上,除了一种情况之外,它的效果非常棒。
我用于Auth0 React SDK授权。我传递getAccessTokenSilently给axios 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)