我只是希望能够使用 Azure Web Api 管理进行休息调用,而无需在 url 中传递订阅密钥。那可能吗?
我正在尝试设置一个非常简单的 Azure 部署,其中包含一些 Web 应用程序和一个 API 管理网关(所有流量都通过该网关进行引导)。我目前遇到的问题是,我不确定阻止流量直接进入 Web 应用程序并绕过网关的最佳方法。是否有“最佳实践”机制来确保仅允许来自网关的流量通过?
我已经看到了有关 IP 范围阻止和“密钥”实施的建议,但我想知道是否有更好的方法?
谢谢
我正在设置一个Azure API管理,后面有一个ASP.NET WebApi 2应用程序.API Management建议在API Management代理和ASP.NET WebApi之间设置Basic auth,以确保只能通过API Management代理访问WebApi.
(当然OAuth令牌仍然会发送"真实"身份验证请求,但我稍后会添加.)
考虑到这一点,我真的不想在应用程序中使用Basic auth,我希望通过Web.config独占IIS.
如何设置我的Web.config以使用存储在Web.config中的用户名/密码进行基本身份验证?
我试着按照这篇文章(http://www.4guysfromrolla.com/articles/122408-1.aspx)但没有太多运气.
这个问题没有答案,但他们可能会要求类似的事情:web.config单用户基本身份验证
我在这里找到的其他答案包括在应用程序中添加我不想做的身份验证.
这是我的Web.config:
<?xml version="1.0"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</configSections>
<appSettings configSource="bin\debug-appSettings.config"/>
<connectionStrings configSource="bin\debug-connectionStrings.config"/>
<system.web>
<compilation targetFramework="4.5.2"/>
<httpRuntime targetFramework="4.5.2"/>
<authentication mode="Forms">
<forms>
<credentials passwordFormat="Clear">
<user name="test" password="test" />
</credentials>
</forms>
</authentication>
<authorization>
<allow users="test" />
<deny users="*" />
</authorization>
</system.web>
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
<remove name="OPTIONSVerbHandler"/> …Run Code Online (Sandbox Code Playgroud) authentication iis web-config asp.net-web-api2 azure-api-management
我正在设计云服务的架构。我正在审查 Azure API 管理和 Azure AD B2C。对于是否可以使用 Azure AD B2C 及其所有功能(注册、登录等)作为 Azure API 管理安全性的提供者,我似乎找不到任何好的答案 - 这可能吗?
是否可以根据 API Manager 客户端证书存储中的证书检查通过 GET https API 调用发送的客户端证书?
在 Azure 门户中,只能使用私钥和密码上传客户端证书。但是,客户端永远不会将其证书的私钥部分与密码一起发送。
当我尝试上传仅包含公钥的客户端证书时,Azure 出现错误。
根据Azure门户API管理文档,应该是可能的: https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients
我已经拿起了别人设置的东西。我们有一个 API 管理实例,位于应用程序网关后面,它具有 API 策略:
<inbound>
<choose>
<when condition="@(context.Request.Certificate == null)">
<return-response>
<set-status code="403" reason="Client certificate required..d1PD" />
</return-response>
</when>
</choose>
<choose>
<when condition="@(!context.Request.Certificate.Verify())">
<return-response>
<set-status code="403" reason="Client certificate cannot be verified..d2PD " />
</return-response>
</when>
</choose>
<choose>
<when condition="@(!context.Deployment.Certificates.Any(c => c.Value.Thumbprint == context.Request.Certificate.Thumbprint))">
<return-response>
<set-status code="403" reason="Client certificate is untrusted or invalid..d3PD" />
</return-response>
</when>
</choose>
<base />
</inbound>
Run Code Online (Sandbox Code Playgroud)
在邮递员中,我正在传递证书和密钥。邮递员控制台显示
Client Certificate:
keyPath:"C:\selfsigned\internalscm.X.com.key"
pemPath:"C:\selfsigned\internalscm.X.com.crt"
pfxPath:""
Run Code Online (Sandbox Code Playgroud)
我正在传递Ocp-Apim-Trace请求的标头,因此我得到了包含以下内容的跟踪:
traceEntries {2}
inbound [10]
..
6 {4}
source : authentication-certificate
timestamp …Run Code Online (Sandbox Code Playgroud) 每当我尝试测试 API(使用 API 刀片的“测试”选项卡)时,我都会得到
Could not complete the request. Please try again later.
我的 API 管理服务上已经发生这种情况至少两个小时了。我创建了一个额外的 API 管理服务和另一个订阅(带有自己的 APIM)。
我处于消费层(SLA 为 99.9%),Azure 状态页面全面显示绿色。我自己的个人仪表板(服务运行状况)正在显示No service issues found。
这让我认为这是我所做的事情。
我该如何着手调查此事?
我正在 Azure API 管理的实例中配置入站策略。
首先,我设置一个变量:
<set-variable name="var1" value="" />
Run Code Online (Sandbox Code Playgroud)
然后我发送一个请求
<send-request mode="new" response-variable-name="var1" timeout="20" ignore-error="false">
Run Code Online (Sandbox Code Playgroud)
它返回一个 JSON。测试时,我在跟踪选项卡中收到以下消息:
已发送对“ https://my-api.azure-api.net/api/data ”的 GET 请求,结果存储在“var1”变量中。
我猜发送请求策略有效并且结果存储在变量中。然后我想返回一个响应(仍在入站中,当尝试在出站中执行此操作时,我得到 500):
<return-response response-variable-name="existing response variable">
<set-status code="200" reason="OK" />
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>
{
"success": true,
"var1": context.Variables["var1"]
}
</set-body>
</return-response>
Run Code Online (Sandbox Code Playgroud)
我的问题是它不起作用......它只是渲染context.Variables["var1"]。
也是如此:
@context.Variables["var1"]@{ context.Variables.GetValueOrDefault<string>("var1") }@context.Variables.GetValueOrDefault("var1")所有这些都按书面形式呈现,没有提取任何价值。
编辑:我还尝试添加占位符字符串,然后使用
<find-and-replace from="Placeholder" to="context.Variables.GetValueOrDefault("var1")" />
Run Code Online (Sandbox Code Playgroud)
并尝试将其放置在入站和出站中。但这一政策并未推出。
这是一个 JSON 对象,我想将其附加到响应中(小细节:实际上我遇到了多个变量的问题)。
我的问题是:如何将声明的变量添加到响应中?
我刚刚发现我刚刚运行的报告中列出了一些弱密码:
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH secp384r1(相当于 7680 位 RSA)FS 弱 256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) ECDH secp384r1(相当于 7680 位 RSA)FS 弱 128
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) ECDH secp384r1(相当于 7680 位 RSA)FS 弱 256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) ECDH secp384r1(相当于 7680 位 RSA)FS 弱 128
TLS_RSA_WITH_AES_256_GCM_SHA384 (0x9d) 弱 256 TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c) 弱 128 TLS_RSA_WITH_AES_256_CBC_SHA256 (0x3d) 弱 256 TLS_RSA_WITH_AES_128_CBC_SHA256 (0x) 3c) 弱 128 TLS_RSA_WITH_AES_256_CBC_SHA (0x35) 弱 256 TLS_RSA_WITH_AES_128_CBC_SHA (0x2f) 弱 128
我只配置了这些密码:
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) ECDH secp384r1(等价 7680 位 RSA) FS 256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) ECDH secp384r1(等价 7680 位 …
powershell azure-api-management azure-web-app-service ibm-api-management
azure ×6
api ×1
asp.net ×1
azure-ad-b2c ×1
azureportal ×1
certificate ×1
iis ×1
policy ×1
powershell ×1
ssl ×1
web-config ×1