目前,我有一个Service Fabric集群,其中包含两个托管Asp Web API的无状态服务.在创建群集时,还会创建适当的Azure负载均衡器.
现在我想在我的集群前添加Application Gateway,原因有很多,比如SSL卸载,url-routing等.
我想了解如何正确配置Application Gateway.我看到2个选项,不确定哪个有效:
哪一个是正确的?任何建议如何配置?
我有一个 Terraform 脚本,用于创建 Azure Key Vault、导入 SSL 证书(带有密码的 3DES .pfx 文件)并创建带有 HTTP 侦听器的应用程序网关。我正在尝试将其更改为使用来自 KeyVault 的 SSL 证书的 HTTPS 侦听器。
我已在 Azure 门户中手动完成此过程,并使用 PowerShell 进行此操作。不幸的是,我没有发现 Terraform 的文档清楚地说明了如何实现这一点。
以下是我的应用程序网关和证书资源的相关片段:
resource "azurerm_application_gateway" "appgw" {
name = "my-appgw"
location = "australiaeast"
resource_group_name = "my-rg"
http_listener {
protocol = "https"
ssl_certificate_name = "appgw-listener-cert"
...
}
identity {
type = "UserAssigned"
identity_ids = [azurerm_user_assigned_identity.appgw_uaid.id]
}
ssl_certificate {
key_vault_secret_id = azurerm_key_vault_certificate.ssl_cert.secret_id
name = "appgw-listener-cert"
}
...
}
resource "azurerm_key_vault" "kv" {
name = "my-kv"
location = "australiaeast" …
Run Code Online (Sandbox Code Playgroud) ssl-certificate terraform azure-keyvault azure-application-gateway
我已配置应用程序网关(AG)来执行SSL终止/卸载.AG配置为仅侦听端口443以进行HTTPS连接.是否可以将HTTP重定向到HTTPS,而不必:
我希望我忽略了AG的旗帜/功能.
我正在尝试使用自定义域名创建应用程序网关,我不断收到错误消息"无法指定域名标签".
我想知道我是否做错了,或者azure应用程序网关不可能拥有自定义域名?
我们有一个 ASP Core 2.0 应用程序,可以很好地与专用网络上的 Azure AD 配合使用。但是,我们一直在使用 Azure 应用程序网关,研究允许远程工作者等从外部访问应用程序的可能性。
我们已经在网关上注册了该应用程序,并且一旦使用 Azure AD 登录,匿名首页就可以通过ourapp.msappproxy.net
. 但是,当(再次?)在应用程序中登录时,客户端被重定向回intervalServer/signin-oidc
失败,因为它无法从外部访问。
虽然我怀疑这是解决方案的任何部分,但我尝试将重定向覆盖"CallbackPath": "/signin-oidc",
到绝对路径,ourapp.msappproxy.net/signin-oidc
但我似乎无法弄清楚如何。更改 Azure 门户中的回复 URL 也无济于事(虽然我怀疑它会不会,但这只是为了验证,对吗?)。
我似乎无法在此特定情况下找到任何有关此的指导,因此很受欢迎。否则,我会思考以下问题:
1,如果我可以将重定向更改为ourapp.msappproxy.net/signin-oidc,是否可以解决登录问题?
2,我什至需要额外的登录步骤,还是应该更改应用程序以接受AzureAppProxyUserSessionCookie
或AzureAppProxyAccessCookie
?(如果这甚至是一种选择?)
azure-active-directory asp.net-core azure-application-gateway
我使用以下组合来实现这一点:1) 浏览器隐身模式 (Chrome) 2) 应用程序位于 Azure 应用程序网关后面(如果不是,则不进行复制)。关闭基于 Cookie 的关联(默认);如果打开,似乎会使重现更频繁地发生。
代码是相当普通的 OIDC authN + cookie。
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddAzureAd(options => {
Configuration.Bind("AzureAd", options);
})
.AddCookie(p => p.SlidingExpiration = true);
Run Code Online (Sandbox Code Playgroud)
我按照建议将 X-Forwarded-Proto 标头转发到 auth 中间件,以便 redirect_uri 使用正确的协议方案。
代码处理
我尝试处理OnRemoteFailure()事件,并重定向到“/Home/AuthRedirect”,这是一个等待 20 秒的匿名页面,然后重定向到“/”(主页)。它有时似乎有效,但并非总是如此。我没有想法。
变通方法
1) 用户可以再次进入主页并按 F5 直到这有效。似乎每个 F5 都让他们向前迈进了一步,一旦填充了 OpenID cookie,其他一切(在 openid 完成后我有更多的身份验证,通过 adal.js 用于 AJAX 使用)。2) 绕过应用程序网关并使用直接服务结构集群 DNS 名称(不接受,因为它是 http)。
细节
System.Exception:关联失败。在 Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.d__12.MoveNext() --- 从上一个抛出异常的位置的堆栈跟踪结束 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime。 CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at …
c# asp.net-identity openid-connect asp.net-core azure-application-gateway
我正在尝试解决一个问题。我必须从 Azure 托管的 Web API 访问托管在本地服务器 (on-prem) 上的 API。
问题是我的本地服务器只允许列入白名单的 IP。我知道我们可以从我们的 Web 应用程序(Azure 托管)获取出站 IP。但我不确定它们是静态的还是会根据缩放而改变。
另一个解决方案是创建 VNET 并将该 Web 应用程序添加到该 VNET 中。但我希望有人提出更好的解决方案。
azure azure-virtual-network azure-app-service-plans azure-application-gateway
我有 1 个应用程序网关,它有 2 个后端(Azure VM),它通过 IIS 托管 ASP CORE REST API。两者都使用端口 80 进行通信。
手动测试一切正常,直到我们使用 jmeter 进行 2500 线程 POST 请求负载测试时,某些请求得到“504 网关超时”作为响应。
我尝试对后端进行完全相同的负载测试,但没有收到任何不良响应。
我的应用程序网关配置是否错误?
要求我有 -
我想像这样做重定向.我有多个将运行的App服务,并且基于我想要重定向到正确的url.
像这样的东西 -
test.com/v1 -> app service appv1.com
test.com/v2 -> app service appv2.com
test.com/v3 -> app service appv3.com
考虑到它支持url映射,azure应用程序网关是否是正确的选择.
但是,我不确定应用程序服务的应用程序网关是否有效?App服务的公共IP是静态的吗?是否应该用于配置应用程序网关
我已经Azure Application Gateway + WAF
在Azure WebApp上运行的ASP.Net Core应用程序的前面配置了一个。我OWASP 3.0
在“预防”模式下并在其中设置了默认规则。
我的问题是,通过WAF的每个请求都以一种或另一种方式失败,并且某些默认规则集返回403 - Forbidden status
。
通过WAF日志,我发现很少有规则失败。
已识别的SQL十六进制编码
{
"message": "Warning. Pattern match \"(?i:(?:\\\\A|[^\\\\d])0x[a-f\\\\d]{3,}[a-f\\\\d]*)+\" at REQUEST_COOKIES:ASP.Net_Auth.",
"data": "Matched Data: H0XAa4 found within REQUEST_COOKIES:AspNetCore.Auth: CfDJ8El_2vmJILFHjQYUCDWwttioV16BAlL12KiQnTLGZztGtA8P0xbo1MosAgmrkUk4IQ7pF5O4ZMJbmRHsHxYHq842rq_hr8FUyMhAMo_5mQ-C_5jBrkRWqUGrYHMa6fVIj4xtGOfku...",
}
Run Code Online (Sandbox Code Playgroud)检测到SQL注释序列
"message": "SQL Comment Sequence Detected.",
"details": {
"message": "Warning. Pattern match \"(/\\\\*!?|\\\\*/|[';]--|--[\\\\s\\\\r\\\\n\\\\v\\\\f]|(?:--[^-]*?-)|([^\\\\-&])#.*?[\\\\s\\\\r\\\\n\\\\v\\\\f]|;?\\\\x00)\" at REQUEST_COOKIES:.AspNetCore.Identity.Application.",
"data": "Matched Data: --Z35d...- found within REQUEST_COOKIES:.AspNetCore.Identity.Application: CfDJ8El_2vmJILFHjQYUCDWwttihjUTpJneEVE1l-3UeTx...",
"file": "rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf",
"line": "1053"
}
Run Code Online (Sandbox Code Playgroud)超出PCRE限制
{
"requestUri": "/api/ping?_=240477821",
"message": "Execution error - PCRE limits exceeded (-8): (null)."
}
Run Code Online (Sandbox Code Playgroud)网址/ …
azure asp.net-core azure-application-gateway azure-web-app-firewall