我正在开发一个使用 OpenId 连接隐式流与 Auth0 提供程序的应用程序。我已经能够从 Auth0 获取 JWT 令牌,现在想在 Couchbase 同步网关中启动一个会话。
为此,我做了一个 POST /{db}/_session,返回一个带有SyncGatewaySessionid的 cookie 。据我了解,这应该与同步网关 Web 界面中的用户相关联......但是我没有看到创建用户。
那么,有没有办法查看我使用哪个用户进行复制?
或者确保同步网关正确读取我的 JWT 令牌的方法?
编辑当我通过在我的配置文件中设置以下内容来禁用 GUEST 用户时,
"users": {
"GUEST": {
"disabled": true,
"admin_channels": [
"*"
]
}
}
Run Code Online (Sandbox Code Playgroud)
我的 OpenId 似乎无法访问同步。我想这意味着我在不知不觉中使用了 GUEST 用户。
所以。如何将我的 OpenID 用户创建为与 GUEST 用户不同的用户?
我正在使用 Auth0 的托管屏幕。我希望以下场景起作用-
但我面对的是这个画面——
我怎样才能保存我的用户这个额外的点击?如何实现静默身份验证?我知道你要传递prompt=none到/authorizeAPI,但是因为我没有手动调用API,如何让我的锁通话/authorize用prompt=none?
auth0.js有一个函数,用于解析 URL 哈希片段并从中提取认证结果。我将此函数包装在一个名为loadSession如下的函数中:
public loadSession(): void {
this.auth0.parseHash((err, authResult) => {
if (authResult) {
window.location.hash = '';
localStorage.setItem('token', authResult.accessToken);
// TODO (1)
} else if (err) {
// TODO (2)
}
});
}Run Code Online (Sandbox Code Playgroud)
如上所示,parseHash将回调函数作为参数,我无法控制它。我想loadSession返回一个在上面Promise解决// TODO (1)和拒绝的问题// TODO (2)。这样我可以做到obj.loadSession().then(() => { // do something if successful }).catch((err) => { // raise error if not })
我已经被困在这个问题上好几个星期了,我想不通。它让我发疯......我读过很多教程,听起来它应该起作用!
我有一个 expressjs 服务器设置和一个 vuejs 应用程序。我希望能够使用历史浏览器模式为 vuejs 路由提供服务,我还希望能够为我的 api 层设置服务器端路由。
如果我禁用历史模式,一切正常 - 但我需要启用历史模式,以便我可以使用 auth0 库和回调。回调不允许在 url 中使用 #。
这是我的代码:
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const logger = require('morgan');
const history = require('connect-history-api-fallback');
const app = express();
app.use(require('connect-history-api-fallback')())
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(history({
verbose: true
}));
app.get('/api', (req, res) => res.send('Hello World!'))
app.use('/', express.static(path.join(__dirname, 'dist')));
var port = process.env.PORT || 8080;
app.listen(port);
console.log('server started '+ port);
Run Code Online (Sandbox Code Playgroud)
对于上面的代码,vuejs 应用程序位于 /dist 下,并且该应用程序的所有路由都有效。但是当我尝试点击 /api 时 - 它也被重定向到 vuejs 应用程序。 …
我目前正在开发一个反应原生的移动应用程序,并使用 Auth0 进行用户管理。我正在使用我自己的登录、注册和忘记密码屏幕,而不是他们的锁定小部件。我能够通过调用他们的身份验证 api 以及使用他们的管理 api 进行帐户链接来实现无密码短信和电子邮件。但是,一旦用户已经拥有帐户,我就很难通过 api 使用他们的电子邮件和密码对用户进行身份验证。在我看来,应该有一个单一的端点,您可以在其中将电子邮件和密码包含在请求正文中。我想知道是否有人可以帮助我了解如何使用 auth0 的 api 简单地登录用户。提前致谢。
目前,当我创建路由时,我会检查 Auth0 方法 - isAuthenticated() - 以确定是否返回受保护的页面或重定向到登录。但是,此状态仅存在于内存中,并且不会在浏览器刷新时将用户保留在其页面上,我希望这样做。
这是一个 React/RR4/React Context 应用程序,我的 Auth0 方法列在 Auth.js(如下)中。
将登录状态存储在 localStorage 中是非常不可取的。如果我将 Auth0 令牌存储在 cookie 中,我不确定如何验证令牌,因为没有设置服务器验证。检查将启用安全数据持久性的正确条件是什么?
ProtectedRoutes.jsx:
<Route
exact
key={route.path}
path={route.path}
render={() => (
// CONDITION TO CHECK
context.auth.isAuthenticated()
? (
<div>
<route.component />
</div>
) : <Redirect to="/login" />
)}
/>
Run Code Online (Sandbox Code Playgroud)
Auth.js(添加以供参考):
import auth0 from 'auth0-js';
import authConfig from './auth0-variables';
class Auth {
accessToken;
idToken;
expiresAt;
tokenRenewalTimeout;
auth0 = new auth0.WebAuth({
domain: authConfig.domain,
clientID: authConfig.clientId,
redirectUri: authConfig.callbackUrl,
responseType: 'token id_token',
scope: 'openid'
});
constructor() …Run Code Online (Sandbox Code Playgroud) 我在我的电子应用程序中使用 auth0 身份验证。无论如何,我都没有使用电子应用程序的浏览器窗口。所以,我想在外部浏览器(chrome、Firefox 等)或安装的默认浏览器中打开我的 auth0 身份验证窗口。有什么办法吗?
很可能我误解了有关该主题的某些内容或在实施过程中遗漏了某些内容
我浏览了 Auth0 的文档,通过端点而不是 SDK 使用 PKCE 创建授权代码流,我看到我们提出了如下挑战和验证程序(来自 auth0 文档):
// Dependency: Node.js crypto module
// https://nodejs.org/api/crypto.html#crypto_crypto
function base64URLEncode(str) {
return str.toString('base64')
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=/g, '');
}
var verifier = base64URLEncode(crypto.randomBytes(32));
Run Code Online (Sandbox Code Playgroud)
和
// Dependency: Node.js crypto module
// https://nodejs.org/api/crypto.html#crypto_crypto
function sha256(buffer) {
return crypto.createHash('sha256').update(buffer).digest();
}
var challenge = base64URLEncode(sha256(verifier));
Run Code Online (Sandbox Code Playgroud)
然后我们将质询传递给授权端点,如下所示(来自 auth0 文档):
https://YOUR_DOMAIN/authorize?
response_type=code&
code_challenge=CODE_CHALLENGE&
code_challenge_method=S256&
client_id=YOUR_CLIENT_ID&
redirect_uri=YOUR_CALLBACK_URL&
scope=SCOPE&
audience=API_AUDIENCE&
state=STATE
Run Code Online (Sandbox Code Playgroud)
并将代码和验证器传递到令牌端点,如下所示(再次来自 auth0 文档):
curl --request POST \
--url 'https://YOUR_DOMAIN/oauth/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--data grant_type=authorization_code \ …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Angular 应用程序中使用Auth0,但是当我在 [https://manage.auth0.com/dashboard/] 中设置配置时,单击“保存更改”按钮时出现此错误
错误!有效负载验证错误:“对象未通过属性itiate_login_uri 上绝对-https-uri-or-empty 格式的验证:https://localhost:4200/en/signin”(启动登录 uri,必须是 https)。
如何解决这个错误?
我正在尝试为我的 UI 编写 E2E 测试。为了登录,我使用 auth0 和社交登录 - Github。我尝试了几种方法来获取 Github 的访问令牌:
使用 cypress 按钮点击:
cy.visit("https://myapp.io/login");
cy.get('.auth0-lock-social-button-text').click();
// Redirect me into Github login page.
cy.get('#login_field').type(my_username);
cy.get('#password').type(my_password);
cy.get('.btn').click();
Run Code Online (Sandbox Code Playgroud)
输出:网址:https: //github.com/session
页面内容:必须启用 Cookie 才能使用 GitHub。
有人有解释如何做的例子吗?
注意:我不想使用,cypress-social-logins因为我需要它来通过 CI。
谢谢。
auth0 ×10
javascript ×2
oauth ×2
oauth-2.0 ×2
angular ×1
auth0-lock ×1
callback ×1
cookies ×1
cypress ×1
e2e-testing ×1
electron ×1
express ×1
openid ×1
pkce ×1
promise ×1
react-native ×1
reactjs ×1
routing ×1
typescript ×1
vue.js ×1