我在我的网络应用程序上使用 Angular 2 和 Auth0 进行身份验证。我可以使用以下代码获取用户个人资料:
auth0 = new auth0.WebAuth({
domain: 'MY-DOMAIN',
clientID: 'MY-CLIENT-ID',
callbackURL: 'MY-CALLBACK',
responseType: 'token id_token'
});
Run Code Online (Sandbox Code Playgroud)
登录:
public login(username: string, password: string): void {
this.auth0.client.login({
realm: 'Username-Password-Authentication',
username,
password
}, (err: any, authResult: any) => {
if (err) {
alert('Error: ' + err.description);
return;
}
if (authResult && authResult.idToken && authResult.accessToken) {
this.setUser(authResult); <--- Here is where I get the profile
this.router.navigate(['/home']);
}
});
}
Run Code Online (Sandbox Code Playgroud)
保存token并localStorage获取配置文件:
private setUser(authResult: any): void {
localStorage.setItem('access_token', …Run Code Online (Sandbox Code Playgroud) 我目前正在开发 Angular 4 应用程序。
该应用程序使用 Auth0 进行身份验证,其语法与其他身份验证服务的语法非常相似。
身份验证的代码如下所示:
// auth.services.ts
@Injectable()
export class Auth {
public lock = new Auth0Lock(myConfig.clientID, myConfig.domain, myConfig.lock);
public userProfile: any;
public idToken: string;
public signUpIncomplete: boolean;
// Configure Auth0
private auth0 = new Auth0.WebAuth({
domain: myConfig.domain,
clientID: myConfig.clientID,
redirectUri: myConfig.redirectUri,
responseType: myConfig.responseType
});
// Create a stream of logged in status to communicate throughout app
private loggedIn: boolean;
private loggedIn$ = new BehaviorSubject<boolean>(this.loggedIn);
constructor(private router: Router, private http: Http) {
// Set userProfile attribute of …Run Code Online (Sandbox Code Playgroud) 我正在尝试按照本教程在我的 Angular 5 应用程序中实现 auth0: https: //toddmotto.com/angular-2-authentication
寄存器工作正常,但当我尝试登录时,我在控制台中看到以下内容:
这是我的身份验证服务:
import { Injectable } from '@angular/core';
// We want to avoid any 'name not found'
// warnings from TypeScript
declare var Auth0Lock: any;
@Injectable()
export class AuthService {
private lock
constructor() {
// These stuff should be exported into other files
this.lock = new Auth0Lock('id...',
'url...')
}
login() {
this.lock.show((error: string, profile: Object, id_token: string) => {
if (error) {
console.log(error);
} else {
console.log(profile)
localStorage.setItem('profile', JSON.stringify(profile));
localStorage.setItem('id_token', id_token);
}
}); …Run Code Online (Sandbox Code Playgroud) 我有一个作为 Azure 应用服务托管的 ASP .Net Core 2.2 Web API。然后是一个 Angular SPA,它使用此 API,作为静态网站托管在 Azure 存储上。
我目前使用 Auth0 作为我们的身份验证和身份服务器。我正在考虑用 Azure 替换 Auth0,但我花了几天时间试图弄清楚我应该做什么,但我完全迷失了。
因此,Auth0 当前服务的目的(我希望 Azure 也能提供服务)是保护我的 Web API,并为其提供身份服务,以便 API 知道哪个用户登录了。因此,当前端调用 API,Auth0 自动将其重定向到登录页面。在这里,用户可以使用现有帐户(包括社交帐户)登录,也可以创建新帐户。登录后,Auth0 向前端提供访问令牌。然后,前端将此访问令牌包含在每个 API 调用的标头中。访问令牌包含 API 用来了解哪个用户正在进行调用的身份信息。所有用户都存储在 Auth0 中。因此,当新用户使用前端 Web 应用程序时,Auth0 会将他们重定向到登录屏幕,他们在其中选择“注册”,并在 Auth0 中创建一个帐户。顺便说一句,任何用户都可以执行此操作 - 这是一个任何人都可以注册和使用的公共网络应用程序。
因此,当考虑使用 Azure 而不是 Auth0 时,首先让我困惑的是有各种身份验证服务:
在 Azure 门户中,在我的应用程序服务下的“身份验证/授权”下,有一个标记为“应用程序服务身份验证”的切换开关。如果我打开此功能,我可以设置身份验证提供程序。
在Azure门户中,有Azure Active Directory,我猜它与上面的内容有关?
还有 Azure B2C。
Azure 应用服务身份验证和 Azure B2C 之间有什么区别?我应该使用哪一个?上述第 1 点和第 2 点有什么区别?我见过的一些例子使用了第 1 点,还有一些使用了第 2 点。
抱歉,如果这是一个非常模糊的问题。我只是在努力弄清楚该朝哪个方向前进。我发现 Auth0 非常简单,但不幸的是我不能对 Azure 身份验证说同样的话。我基本上只是想弄清楚哪个 Azure 选项最适合替换我现在正在使用的 Auth0。谢谢
authentication authorization azure auth0 azure-authentication
我已经按照他们的快速入门教程使用 React 设置了 Auth0。
基本上,我的 React 应用程序围绕着它们的 Context Provider,我可以访问useAuth0我的任何组件中的钩子。
这是我向 API 发出请求的方式:
const TestComponent = () => {
const { getTokenSilently } = useAuth0();
const getObjectsFromAPI = async () => {
const token = await getTokenSilently();
const axiosConfig = {
headers: {
Authorization: "Bearer " + token
}
};
const response = await axios.get(
"/api/objects/",
axiosConfig
);
// ... do something with the response
};
return ... removed code for brevity
};
Run Code Online (Sandbox Code Playgroud)
有没有办法提出请求而不必在每个请求上写token和axiosConfig?
我知道我可以使用配置初始化一个新的 …
我正在按照 Hasura 的文档使用 JWT 将登录功能与 Auth0 集成。我的 GraphQL 端点在控制台上运行良好。但是,当我尝试使用 Auth0 SDK 实现登录按钮时,出现以下错误:
{error: "access_denied", error_description: "Service not found: https://mydomain.herokuapp.com/v1/graphql", state: "T3FEQUpFRXFqX1RqcGQwaXpms3lXeEM3Rk80ZaQtLUp3bWdRQmVzLXpRaA=="}
Run Code Online (Sandbox Code Playgroud)
这是我失踪的明显事情吗?
正如你们中的一些人所知,Chrome 将在本月开始使用新的 SameSite cookie 政策(https://web.dev/samesite-cookies-explained/和https://www.chromium.org/updates/same-site)。
我们正在为我们的应用程序使用 Auth0,并且自去年年底以来在 Chrome 的控制台中看到了这个 SameCookie 警告:
现在,随着新政策的推出越来越近,我尝试使用 Chrome 开发人员工具中的应用程序视图找到有问题的 cookie。这是什么显示:
如您所见,任何 cookie都没有Secure或SameSize条目。
所以我启用了新政策,看看会发生什么变化。这可以在chrome://flags
在这些更改之后,我在控制台中看到一条消息,告诉我 cookie 被阻止了。
但是 Chrome 开发人员工具中的应用程序视图显示的 cookie 与以前完全相同。
此外,我浏览了开发人员工具网络视图中的每个条目。任何条目都没有Cookie选项卡。
这非常令人沮丧,因为我不知道您被阻止的 cookie 是否与我们应用程序的运行相关。
有没有办法找出哪个cookie被阻止了?Chrome 不能在写入控制台的警告中提及 cookie 吗?
尝试围绕 auth0-spa-js 设置玩笑测试,但在尝试等待 createAuth0Client(config) 时收到错误“auth0-spa-js 必须在安全源上运行”。在玩笑测试中模拟安全来源的最佳方法是什么?
我想将 AWS SSO 配置为企业 SAML 连接。我试图通过窃取Auth0 的其他 SAML IdP 示例来拼凑正确的配置,但我还没有能够让它工作。
在 AWS SSO 中:
https://<AUTH0 TENANT>.auth0.com/login/callbackurn:auth0:<AUTH0 TENANT>:<AUTH0 CONNECTION NAME>在 Auth0 中:
目前,在我的 Auth0 SAML 连接上单击“测试”会重定向到 AWS SSO,我可以登录,但随后出现错误“缺少主题的 nameId 格式”。
是否有人成功将 AWS SSO 配置为 Auth0 Enterprise SAML 连接?
需要说明的是,我并不是要尝试将 Auth0 配置为我的 AWS IdP,因此Auth0 集成 AWS sso 文档不适用
我们正在构建一个需要用户管理功能的 Web 应用程序:管理员用户、管理员组、业务团队组、公共用户、基本用户等。根据他们的角色、组,不同的能力可以访问我们应用程序的不同资源。
为此考虑了几个选项:1/ 特定开发 2/ 使用开源:Keycloak 3/ 使用商业解决方案:AWS cognito,因为我们在开发中使用了大量 AWS 资源。
由于我们对这个项目的预算有限,我正在权衡优化开发工作、基础设施和技术支持成本的选项。问题 :