我正在使用Auth0来处理我的网络应用程序中的身份验证.我正在使用ASP.NET Core v1.0.0和Angular 2 rc5,我对身份验证/安全性一般不太了解.
在ASP.NET Core Web Api的Auth0文档中, JWT算法有两种选择:RS256和HS256.这可能是一个愚蠢的问题但是:
RS256和HS256有什么区别?有哪些用例(如果适用)?
我读到在使用JWT时,没有必要防止CRSF攻击,例如:" 因为你不依赖于cookie,所以你不需要防止跨站点请求 ".
但是,我不明白:如果我将令牌存储在localStorage中(正如我在同一网站的教程中所建议的那样),是什么阻止攻击者通过读取我的localStorage而不是我的cookie来伪造恶意请求?
由于它是在服务器端生成的,因此我不知道如何在客户端请求中使用令牌而不将其存储在客户端的某个位置.
如何http://auth0.com的身份验证功能比较火力地堡的认证?
Auth0.com在Free或Silver计划中是否提供Firebase未提供的任何身份验证功能?
我Auth0
用于我的用户身份验证只允许登录用户访问Spring(Boot)RestController
.此时我正在创建一个实时消息功能,用户可以使用和从Angular 2
客户端(localhost:4200
)发送消息到Spring服务器(localhost:8081).stompjs
sockjs
尝试创建Stomp客户端并启动连接时,我收到以下控制台错误:
The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. Origin 'http://localhost:4200' is therefore not allowed access. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
Run Code Online (Sandbox Code Playgroud)
在研究了这个问题之后,看起来无法同时设置选项origins =*和credentials = true.当我已经将WebSocketConfig中允许的原点设置为客户端域时,如何解决此问题?
Angular 2组件
connect() {
var socket = new SockJS('http://localhost:8081/chat');
this.stompClient = Stomp.over(socket);
this.stompClient.connect({}, function(result) {
console.log('Connected: ' + result); …
Run Code Online (Sandbox Code Playgroud) 我正在使用 Auth0 进行服务身份验证。我有以下问题。我已经创建了一个用户,但是当我尝试向该用户发出请求时,出现以下错误。授权服务器未配置默认连接
我对此进行了研究,发现我需要配置租户资源所有者密码流依赖于能够通过用户名和密码对用户进行身份验证的连接,因此您必须为租户设置默认连接。
转至 Auth0 仪表板 > 租户设置,然后向下滚动以找到默认目录设置。输入您要使用的连接的名称。确保它能够通过用户名和密码对用户进行身份验证。
但我知道默认目录是什么意思。这是我生成的 Auth0 应用程序的名称,因为这是服务,应该通过用户名和密码对用户进行身份验证。
我已经从 auth0 控制台生成了一个 SpringBoot 应用程序。这就是他们所说的联系的意思。
在Auth0中,您可以使用刷新令牌.在此链接中,我们可以看到许多返回的参数:
lock.showSignin({
authParams: {
scope: 'openid offline_access'
}
}, function (err, profile, id_token, access_token, state, refresh_token) {
// store refresh_token
});
Run Code Online (Sandbox Code Playgroud)
显然,access_tokens可用于检索用户配置文件数据.但这似乎是oauth特有的,我认为auth0使用openid?
id_token
和之间有什么区别access_token
?
我目前正在学习如何在Laravel中创建一个API,我发现自己陷入了这个令人困惑的概念.经过几天的研究和实践,我终于可以理解这个概念,制作一个迷你指南.我不得不查看很多单独的网页,所以我会尽力解释它们之间的关系.
我们希望建立一个中央权限来为我们的各种应用程序(.net)进行身份验证和授权.我们看到IdentityServer4是开源的,免费的,而Auth0需要花钱.有没有人同时使用这两种?任何人都可以提供建议选择哪个以及为什么?
我已经开始测试一个反应webapp但我没有走远,因为我遇到了登录问题.我正在使用cypress e2e测试工具.
将显示一个欢迎页面,其中包含一个要登录的按钮,该按钮将重定向到您的auth0
服务.用户使用电子邮件和密码登录,然后使用令牌重定向回webapp.
我尝试了许多不同的方法,导致了不同的问题.
注意:我不想测试Auth0,我只想输入我的webapp.
尝试1.单击登录按钮
尝试:赛普拉斯应该像用户一样做,因此测试将点击登录按钮并转到Auth0并填写凭据.问题:赛普拉斯不允许您在测试期间导航到其他域.
由于赛普拉斯更改了自己的主机URL以匹配您的应用程序的URL,因此它要求您的应用程序保留在同一个超级域中以进行单个测试.
您应该能够禁用该设置"chromeWebSecurity": false
,cypress.json
但它无法使用,因为您只能访问单个域cy.visit()
尝试2.从测试中以编程方式登录
尝试:使用auth0-js
库登录cypress测试,因此不需要单击登录按钮,因此不会发生域更改.
describe('Waiting to fetch', () => {
beforeEach(() => {
this.fetchAuthDeferred = getDeferred()
cy.visit('http://localhost:3000', {
onBeforeLoad(win) {
cy.stub(win, 'fetch')
.withArgs($url)
.as('fetchAuth')
.returns(this.fetchAuthDeferred.promise)
}
})
})
it('login', () => {
cy.visit('http://localhost:3000')
const auth = new auth0.WebAuth(authOptions)
auth.login(loginOptions)
cy.get('@fetchAuth', { timeout: 10000 }).should('haveOwnProperty', 'token')
cy.visit('http://localhost:3000')
cy.get('[class*="hamburger"]').click()
})
})
Run Code Online (Sandbox Code Playgroud)
问题:cy.route()
不等待获取请求,解决方法是使用cy.stub(win, 'fetch')
.它不会等待:
尝试3.从webapp以编程方式登录
尝试:我开始认为柏树只是从应用程序发出的间谍请求,而不是来自测试本身(正如我在上面的观点中所尝试的那样).
我在欢迎页面中添加了一个假登录按钮,该按钮将 …