У нас есть надстройка Outlook, которая работает в OWA.
Когда я выполняю вызов из JavaScript в ответ на команду надстройки, я использую форматhttps://company.ourdomain.com/api/Controller/Action в вызове ajax.
В итоге я получаю одну из этих ошибок CORS (иногда это предполетная, а иногда CORB).Почему я получаю это, если Javascript буквально находится в том же домене, что и веб-сервис?
Я предполагаю, что я аутентифицирован, так как я вошел в свою учетную запись Outlook.
Что дает?
ПРИМЕЧАНИЕ. В качестве эксперимента я предпринял попытку вызова RESTful, введя URL-адрес напрямую (без OWA).Это вызвало проверку подлинности кода в Azure AD.Затем я вошел в OWA в том же сеансе браузера, и все работало нормально.Нужно ли мне на самом деле проходить аутентификацию в Javascript, даже если вызываемый мной веб-сервис находится в том же домене?
AJAX CALL, КОТОРЫЙ ГЕНЕРАРИРУЕТ ОШИБКУ Помните, что после того, как я это сделаю, все будет работать нормальноМы сделали вызов RESTful, позвонив в мой веб-сервис прямо из браузера
var apiUri = '/api/People/ShowRecord';
$.ajax({
url: apiUri,
type: 'POST',
data: JSON.stringify(serviceRequest),
contentType: 'application/json; charset=utf-8',
dataType: 'json'
}).done(function (response) {
if (!response.isError) {
// response to successful call
}
else {
// ...
}
}).fail(function (status) {
// some other response
}).always(function () {
console.log("Completed");
});
НАБЛЮДЕНИЕ Когда я вызываю API из адресной строки, запускается приведенный ниже код.Этот код никогда не вызывается Javascript
[assembly: OwinStartup(typeof(EEWService.AuthStartup))]
namespace EEWService
{
public partial class AuthStartup
{
public void Configuration(IAppBuilder app)
{ app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Notifications = new WsFederationAuthenticationNotifications
{
RedirectToIdentityProvider = (context) =>
{
context.ProtocolMessage.Whr = "ourdomain.com";
return Task.FromResult(0);
}
},
MetadataAddress = ConfigurationManager.AppSettings["ida:MetadataAddress"],
Wtrealm = ConfigurationManager.AppSettings["ida:Audience"],
TokenValidationParameters = new TokenValidationParameters
{
ValidAudiences = new string[] { $"spn:{ConfigurationManager.AppSettings["ida:Audience"]}" }
}
});
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
},
MetadataAddress = ConfigurationManager.AppSettings["ida:MetadataAddress"],
});
}
}
}