提问人:BLNT 提问时间:11/16/2023 更新时间:11/16/2023 访问量:66
自定义身份验证的入站策略中的问题
Issue in inbound policy for custom authentication
问:
我在入站策略中的此自定义身份验证的条件下遇到了问题,我尝试了各种方法来找出,我无法识别发送请求中的 API 和发送请求代码本身工作正常。when
<send-request mode="new" response-variable-name="authResponse" timeout="60" ignore-error="false">
<set-url>@("my_url")</set-url>
<set-method>GET</set-method>
<set-header name="Authorization" exists-action="override">
<value>@("Bearer " + context.Request.Headers.GetValueOrDefault("Authorization", ""))</value>
</set-header>
</send-request>
<choose>
<when condition="@((int)((Newtonsoft.Json.Linq.JObject)context.Variables["authResponse"]).Property("StatusCode").Value == 200)">
<!-- Continue with the API call -->
</when>
<otherwise>
<return-response>
<set-status code="401" reason="Unauthorized" />
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>
{
"errorMessage": "Authentication failed"
}
</set-body>
</return-response>
</otherwise>
</choose>
我也试过这个,但这不起作用
<when condition="@((int)context.Variables["authResponse.StatusCode"] == 200)">
<!-- Continue with the API call -->
</when>
我收到的回复是这样的,API 没有问题
{
"statusCode": 500,
"message": "Internal server error",
"activityId": "91c498c2-a213-4f38-bb38-494c331bc46e"
}
答:
1赞
Ikhtesam Afrin
11/16/2023
#1
您可以使用以下策略来设置 for 状态代码。when condition
<inbound >
<base />
<send-request mode="new" response-variable-name="authResponse" timeout="60" ignore-error="false">
<set-url>@("my_url")</set-url>
<set-method>GET</set-method>
<set-header name="Authorization" exists-action="override">
<value>@("Bearer " + context.Request.Headers.GetValueOrDefault("Authorization", ""))</value>
</set-header>
</send-request>
<choose>
<when condition="@(((IResponse)context.Variables["authResponse"]).StatusCode==200)>
<!-- Added response for Testing -->
<return-response>
<set-body>Successfully Authenticated...</set-body>
</return-response>
</when>
<otherwise>
<return-response>
<set-status code="401" reason="Unauthorized" />
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>Authentication Failed...</set-body>
</return-response>
</otherwise>
</choose>
</inbound>
通过使用 ,我能够获得预期的响应,如下所示。<when condition="@(((IResponse)context.Variables["authResponse"]).StatusCode==200)>
跟踪-
评论
0赞
Ikhtesam Afrin
11/16/2023
@BLNT 希望这对你有用
0赞
BLNT
11/16/2023
出于某种原因,我得到了 authResponse 的 500 StatusCode,但是当我在 postman 中运行它时,我得到了 200,我不确定为什么在 send-request 中。API 中没有问题
0赞
Ikhtesam Afrin
11/16/2023
是否使用相同的策略?请检查终结点和令牌,或者还可以获取有关跟踪中错误消息的更多详细信息
0赞
Ikhtesam Afrin
11/16/2023
@BLNT尝试检查跟踪中的错误
0赞
BLNT
11/16/2023
我追踪了它,我得到了 500,我的发送请求看起来不错,我相信那部分有问题
评论