【发布时间】:2017-09-20 23:22:06
【问题描述】:
我正在与我们的报告供应商集成单点登录,该供应商通过从其 API 调用 Web api 方法来验证令牌。当我在本地机器上使用本地托管的 API 进行测试时,我可以使用这个 web api 方法,用户使用有效的令牌进行验证,并且 SSO 工作顺利。当我将此更改发布到 Azure 时,不会调用此验证方法,因此 SSO 不起作用。我缺少什么或者我需要在 Azure 的应用服务中做些什么来确保调用这个 Web api。在 Azure 中发布时,它看起来肯定会被跳过,因为它在我的本地计算机上运行良好。
[RoutePrefix("api/reporting")]
public class ReportingAPIController : ApiController
{
[HttpGet]
[Route("validateVendorAuthToken")]
public UserInfo ValidateVendorAuthToken(string access_token)
{
var userInfo = Infrastructure.ReportingVendor.TokenAuthorization.GetUserInfo(access_token);
return userInfo;
}
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// TODO: Add any additional configuration code.
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
然后在我的 global.asax 中,
GlobalConfiguration.Configure(WebApiConfig.Register);
为了调用 ValidateVendorAuthToken,我们提供供应商 API SQL 数据库中的字段值来匹配此路由,例如 http://mysite.azurewebsites.net/api/reporting/validateVendorAuthToken,然后生成令牌。
为了在我的本地机器上进行测试,我将此值更改为 http://localhost:69808/api/reporting/validateVendorAuthToken。
由于这在本地有效,我得出的结论是,当站点托管在 Azure 中时,永远不会调用此 Web api 方法。我需要在 Azure 中做些什么,还是我的应用程序中缺少某些东西?
任何帮助或指导将不胜感激。
【问题讨论】:
标签: c# asp.net-mvc azure asp.net-web-api