我正在设计一个新的 Web 应用程序,需要 oAuth2 实现。我一直在阅读 PKCE 的 oAuth2 授权代码流程。这是有道理的,它确保启动授权代码流的客户端与交换访问令牌(和/或刷新令牌)的授权代码的客户端是同一客户端。
但后来我想知道我们如何处理刷新令牌。据我所知,BFF 现在是首选解决方案,我们使用一个单独的组件(前端的后端)来处理来自 Web 应用程序的所有调用并将这些调用代理到后端 api,同时处理所有访问令牌和刷新令牌。Web 应用程序和 BFF 维护一个会话 cookie,因此 BFF 可以跟踪应将哪个访问令牌添加到哪个请求等。
大多数博客都提到“如果您将会话 cookie 设置为严格且仅 http 且安全,这是安全的,因为这样恶意 JS 就无法获取该 cookie”。
这就是我难以理解为什么这更安全的地方。如果 cookie 足够安全来处理会话 ID,那么为什么它们不够安全来处理访问令牌呢?或者甚至刷新令牌?如果它们是基于 cookie 的,那么它们会随每个请求一起发送,并且恶意 JS 无法访问它。如果可以,那么 BFF 模型不会提供任何额外的安全性,只是稍微复杂一点,不是吗?
所以底线是:如果 BFF 被认为是安全的(r),因为会话保存在安全的仅 http cookie 中,为什么将访问/刷新令牌保存在安全的仅 http cookie 中不安全?
cookies access-token oauth-2.0 single-page-application refresh-token
我正在尝试创建一个多级管道,其中为管道的每个阶段定义了变量组。目标是将组中的值作为参数传递给子模板。看来在该阶段定义的组的值没有传递到子模板中。它用空字符串覆盖“DEFAULTVALUE”。
管道.yml
trigger:
- none
pool:
name: 'Azure Pipelines'
vmImage: windows-latest
stages:
- stage: DEV
variables:
- group: my-group-dev
jobs:
- template: sub-template.yml
parameters:
env: 'dev'
subscriptionName: '$(SubscriptionName)' # This reference from the variable group doesn't get passed in
subscriptionId: '$(SubscriptionId)'
- stage: TEST
variables:
- group: my-group-test
jobs:
- template: sub-template.yml
parameters:
env: 'test'
subscriptionName: '$(SubscriptionName)' # This reference from the variable group doesn't get passed in
subscriptionId: '$(SubscriptionId)'
Run Code Online (Sandbox Code Playgroud)
子模板.yml
parameters:
env: 'DEFAULTVALUE'
subscriptionName: 'DEFAULTVALUE'
subscriptionId: 'DEFAULTVALUE'
jobs:
- …
Run Code Online (Sandbox Code Playgroud) 现在这让我困扰了2个多小时,我只是没有看到它.
我有一个表单,它在PHP中验证它.所以我所做的是根据我提交的返回响应创建一个AJAX调用,或者不提交表单.这是我的AJAX调用:
$("#savePO").click(function() {
$.ajax({
type : 'POST',
url : 'ajax/newpo_check_ajax.php',
data : $("#newpoform").serialize(),
succes : function(respons) {
alert(respons);
}
});
});
Run Code Online (Sandbox Code Playgroud)
响应页面(newpo_check_ajax.php)只是:
<?php
echo "AJAX IS WORKING!";
?>
Run Code Online (Sandbox Code Playgroud)
当我检查Firebug时,它声明响应确实应该是什么("AJAX正在工作!"),但无论我尝试什么,我都没有得到响应警报!
上面的jQuery代码位于我的页面底部,因为它不能在顶部工作(内部$(document).ready())
.
任何帮助表示赞赏!:)
编辑:不幸的是我再也无法正常阅读了.我忘记了一个S成功了.