C#을 사용하는 Azure API 관리 고급 정책 - II
또한 이 문서의 I부here를 참조하십시오.
조건 및 Ip 필터 정책과 고급 C# 코드 내부 정책을 수행할 수 있는 MSDN의 다음this article을 통해 수행할 수 있습니다.
먼저 Namedvalues 탭 아래의 Api Management 내에서 Namedvalue를 만듭니다.
키 이름: IpAllowList 값:
[
{
"User":"user1",
"subscriptionKey":"subskeyforuser1",
"AllowedIps" : ["192.168.1.3","192.168.1.4","192.168.1.5","192.168.3.4","13.91.284.72"]
}
]
정책 내에서 Namedvalue json 콘텐츠를 가져오려면 아래 코드를 사용하세요.
<set-variable name="IAllowListNamdval" value="{{IpAllowList}}" />
요청 헤더 또는 매개변수에 제공된 구독 키를 얻으려면 아래 코드를 사용하십시오.
<set-variable name="SubscriptionKeyVar" value="@{ string[] value; string value2;
if (context.Request.Headers.TryGetValue("Ocp-Apim-Subscription-Key", out value))
{ if(value != null && value.Length > 0)
{
return value[0];
}
}
else if(context.Request.MatchedParameters.TryGetValue("Ocp-Apim-Subscription-Key", out value2))
{ if(value2 != null && value2 != "")
{
return value2;
}
}
return null;
}" />
Namedvalue에서 얻은 json 배열에 LINQ 쿼리를 사용하면 아래 코드를 참조하십시오.
<set-variable name="AlwdIpForUser" value="@{
var jsonval = JArray.Parse((string)context.Variables.GetValueOrDefault<string>("IAllowListNamdval"));
var arr = jsonval.Where(m => m["subscriptionKey"].Value<string>() == (string)context.Variables.GetValueOrDefault<string>("SubscriptionKeyVar")).SelectMany(y => (JArray)y["AllowedIps"]);
return arr.Any(t => t.Value<string>() == (string)context.Request.IpAddress); }" />
그런 다음 아래 코드로 IP를 차단하는 결과를 사용합니다.
<choose>
<when condition="@(!(bool)context.Variables.GetValueOrDefault<bool>("AlwdIpForUser"))">
<ip-filter action="forbid">
<address>@(context.Request.IpAddress)</address>
</ip-filter>
</when>
</choose>
[
{
"User":"user1",
"subscriptionKey":"subskeyforuser1",
"AllowedIps" : ["192.168.1.3","192.168.1.4","192.168.1.5","192.168.3.4","13.91.284.72"]
}
]
위의 단계에 따라 IP를 필터링하고 차단할 수 있습니다. Namedvalue에서 구독 키 기반 사용자 및 해당 IP 차단이 적용될 수 있는 이 구조의 json 콘텐츠를 가질 수 있습니다.
Reference
이 문제에 관하여(C#을 사용하는 Azure API 관리 고급 정책 - II), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ssanjeevi/azure-api-management-advanced-policies-using-c-ii-1fe1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)