Javascript call of Azure Function with AD authentification from SharePoint Online
I have one big problem with call of azure function. My azure function work perfectly when authentication is OFF. In SharePoint online I have this JS code:
var serviceURL = "https://xxxxxxxxx.azurewebsites.net/api/Function1?name=test";
$.ajax({
url: serviceURL,
type: "POST",
dataType: 'JSON',
crossDomain: true,
success: function (data) {
alert("Success: " + data);
},
error: function (ex) {
alert("Failure getting user token");
}
});
Ok so this is working. But When I setup Active Directory Authentication on mu Azure Function and change my code to this:
var serviceURL = "https://xxxxxxxxx.azurewebsites.net/api/Function1?name=test";
$.ajax({
url: serviceURL,
type: "POST",
dataType: 'JSON',
crossDomain: true,
headers: {
"Content-Type": "'application/json;odata=verbose'",
"Accept": "application/json;odata=verbose",
"crossDomain": "true",
"credentials": "include",
"Access-Control-Allow-credentials": "true"
},
xhrFields: {
withCredentials: true
},
success: function (data) {
alert("Success: " + data);
},
error: function (ex) {
alert("Failure getting user token");
}
});
I get this error
SEC7122: [CORS] The origin 'https://xxxxxxxx.sharepoint.com' made a request using credentials mode 'include' and did not find an Access-Control-Allow-credentials response header with a value of 'true' for cross-origin resource at 'https://xxxxxxxx.azurewebsites.net/api/Function1?name=test'.
My azure function look like this
[FunctionName("Function1")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
// parse query parameter
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
if (name == null)
{
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
name = data?.name;
}
return name == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + ClaimsPrincipal.Current.Identity.Name);
}
I have allowed in CORS settings my sharepoint domain so there is everything ok... I have tested everything but nothing helps me with this problem...Same problem...In my azure function I have tested to setup express or advanced management mode for AD authentification but nothing helsp....Thank you for your help.
azure sharepoint azure-functions sharepoint-online
add a comment |
I have one big problem with call of azure function. My azure function work perfectly when authentication is OFF. In SharePoint online I have this JS code:
var serviceURL = "https://xxxxxxxxx.azurewebsites.net/api/Function1?name=test";
$.ajax({
url: serviceURL,
type: "POST",
dataType: 'JSON',
crossDomain: true,
success: function (data) {
alert("Success: " + data);
},
error: function (ex) {
alert("Failure getting user token");
}
});
Ok so this is working. But When I setup Active Directory Authentication on mu Azure Function and change my code to this:
var serviceURL = "https://xxxxxxxxx.azurewebsites.net/api/Function1?name=test";
$.ajax({
url: serviceURL,
type: "POST",
dataType: 'JSON',
crossDomain: true,
headers: {
"Content-Type": "'application/json;odata=verbose'",
"Accept": "application/json;odata=verbose",
"crossDomain": "true",
"credentials": "include",
"Access-Control-Allow-credentials": "true"
},
xhrFields: {
withCredentials: true
},
success: function (data) {
alert("Success: " + data);
},
error: function (ex) {
alert("Failure getting user token");
}
});
I get this error
SEC7122: [CORS] The origin 'https://xxxxxxxx.sharepoint.com' made a request using credentials mode 'include' and did not find an Access-Control-Allow-credentials response header with a value of 'true' for cross-origin resource at 'https://xxxxxxxx.azurewebsites.net/api/Function1?name=test'.
My azure function look like this
[FunctionName("Function1")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
// parse query parameter
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
if (name == null)
{
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
name = data?.name;
}
return name == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + ClaimsPrincipal.Current.Identity.Name);
}
I have allowed in CORS settings my sharepoint domain so there is everything ok... I have tested everything but nothing helps me with this problem...Same problem...In my azure function I have tested to setup express or advanced management mode for AD authentification but nothing helsp....Thank you for your help.
azure sharepoint azure-functions sharepoint-online
1
Likely related to github.com/Azure/azure-functions-host/issues/620, see this issue too: stackoverflow.com/questions/53321897/…
– Marie Hoeger
Nov 16 '18 at 0:30
Hello. Thank you for your help. The problem is if I remove my domain from cors list the problem is little different: SEC7120: [CORS] The origin 'xxxxxxxxx.sharepoint.com' did not find 'xxxxxxxxxx.sharepoint.com' in the Access-Control-Allow-Origin response header for cross-origin resource at 'xxxxxxxxxxx.azurewebsites.net/api/Function1?name=test
– user1223484
Nov 16 '18 at 13:20
If I call my function directly from web browser then I must login and after that everything works...But from javascript there still same error.
– user1223484
Nov 16 '18 at 22:10
if you remove all cors from the portal, you have to send the header in the response manually
– Thomas
Nov 18 '18 at 4:35
add a comment |
I have one big problem with call of azure function. My azure function work perfectly when authentication is OFF. In SharePoint online I have this JS code:
var serviceURL = "https://xxxxxxxxx.azurewebsites.net/api/Function1?name=test";
$.ajax({
url: serviceURL,
type: "POST",
dataType: 'JSON',
crossDomain: true,
success: function (data) {
alert("Success: " + data);
},
error: function (ex) {
alert("Failure getting user token");
}
});
Ok so this is working. But When I setup Active Directory Authentication on mu Azure Function and change my code to this:
var serviceURL = "https://xxxxxxxxx.azurewebsites.net/api/Function1?name=test";
$.ajax({
url: serviceURL,
type: "POST",
dataType: 'JSON',
crossDomain: true,
headers: {
"Content-Type": "'application/json;odata=verbose'",
"Accept": "application/json;odata=verbose",
"crossDomain": "true",
"credentials": "include",
"Access-Control-Allow-credentials": "true"
},
xhrFields: {
withCredentials: true
},
success: function (data) {
alert("Success: " + data);
},
error: function (ex) {
alert("Failure getting user token");
}
});
I get this error
SEC7122: [CORS] The origin 'https://xxxxxxxx.sharepoint.com' made a request using credentials mode 'include' and did not find an Access-Control-Allow-credentials response header with a value of 'true' for cross-origin resource at 'https://xxxxxxxx.azurewebsites.net/api/Function1?name=test'.
My azure function look like this
[FunctionName("Function1")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
// parse query parameter
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
if (name == null)
{
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
name = data?.name;
}
return name == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + ClaimsPrincipal.Current.Identity.Name);
}
I have allowed in CORS settings my sharepoint domain so there is everything ok... I have tested everything but nothing helps me with this problem...Same problem...In my azure function I have tested to setup express or advanced management mode for AD authentification but nothing helsp....Thank you for your help.
azure sharepoint azure-functions sharepoint-online
I have one big problem with call of azure function. My azure function work perfectly when authentication is OFF. In SharePoint online I have this JS code:
var serviceURL = "https://xxxxxxxxx.azurewebsites.net/api/Function1?name=test";
$.ajax({
url: serviceURL,
type: "POST",
dataType: 'JSON',
crossDomain: true,
success: function (data) {
alert("Success: " + data);
},
error: function (ex) {
alert("Failure getting user token");
}
});
Ok so this is working. But When I setup Active Directory Authentication on mu Azure Function and change my code to this:
var serviceURL = "https://xxxxxxxxx.azurewebsites.net/api/Function1?name=test";
$.ajax({
url: serviceURL,
type: "POST",
dataType: 'JSON',
crossDomain: true,
headers: {
"Content-Type": "'application/json;odata=verbose'",
"Accept": "application/json;odata=verbose",
"crossDomain": "true",
"credentials": "include",
"Access-Control-Allow-credentials": "true"
},
xhrFields: {
withCredentials: true
},
success: function (data) {
alert("Success: " + data);
},
error: function (ex) {
alert("Failure getting user token");
}
});
I get this error
SEC7122: [CORS] The origin 'https://xxxxxxxx.sharepoint.com' made a request using credentials mode 'include' and did not find an Access-Control-Allow-credentials response header with a value of 'true' for cross-origin resource at 'https://xxxxxxxx.azurewebsites.net/api/Function1?name=test'.
My azure function look like this
[FunctionName("Function1")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
// parse query parameter
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
if (name == null)
{
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
name = data?.name;
}
return name == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + ClaimsPrincipal.Current.Identity.Name);
}
I have allowed in CORS settings my sharepoint domain so there is everything ok... I have tested everything but nothing helps me with this problem...Same problem...In my azure function I have tested to setup express or advanced management mode for AD authentification but nothing helsp....Thank you for your help.
azure sharepoint azure-functions sharepoint-online
azure sharepoint azure-functions sharepoint-online
asked Nov 15 '18 at 20:24
user1223484user1223484
90111
90111
1
Likely related to github.com/Azure/azure-functions-host/issues/620, see this issue too: stackoverflow.com/questions/53321897/…
– Marie Hoeger
Nov 16 '18 at 0:30
Hello. Thank you for your help. The problem is if I remove my domain from cors list the problem is little different: SEC7120: [CORS] The origin 'xxxxxxxxx.sharepoint.com' did not find 'xxxxxxxxxx.sharepoint.com' in the Access-Control-Allow-Origin response header for cross-origin resource at 'xxxxxxxxxxx.azurewebsites.net/api/Function1?name=test
– user1223484
Nov 16 '18 at 13:20
If I call my function directly from web browser then I must login and after that everything works...But from javascript there still same error.
– user1223484
Nov 16 '18 at 22:10
if you remove all cors from the portal, you have to send the header in the response manually
– Thomas
Nov 18 '18 at 4:35
add a comment |
1
Likely related to github.com/Azure/azure-functions-host/issues/620, see this issue too: stackoverflow.com/questions/53321897/…
– Marie Hoeger
Nov 16 '18 at 0:30
Hello. Thank you for your help. The problem is if I remove my domain from cors list the problem is little different: SEC7120: [CORS] The origin 'xxxxxxxxx.sharepoint.com' did not find 'xxxxxxxxxx.sharepoint.com' in the Access-Control-Allow-Origin response header for cross-origin resource at 'xxxxxxxxxxx.azurewebsites.net/api/Function1?name=test
– user1223484
Nov 16 '18 at 13:20
If I call my function directly from web browser then I must login and after that everything works...But from javascript there still same error.
– user1223484
Nov 16 '18 at 22:10
if you remove all cors from the portal, you have to send the header in the response manually
– Thomas
Nov 18 '18 at 4:35
1
1
Likely related to github.com/Azure/azure-functions-host/issues/620, see this issue too: stackoverflow.com/questions/53321897/…
– Marie Hoeger
Nov 16 '18 at 0:30
Likely related to github.com/Azure/azure-functions-host/issues/620, see this issue too: stackoverflow.com/questions/53321897/…
– Marie Hoeger
Nov 16 '18 at 0:30
Hello. Thank you for your help. The problem is if I remove my domain from cors list the problem is little different: SEC7120: [CORS] The origin 'xxxxxxxxx.sharepoint.com' did not find 'xxxxxxxxxx.sharepoint.com' in the Access-Control-Allow-Origin response header for cross-origin resource at 'xxxxxxxxxxx.azurewebsites.net/api/Function1?name=test
– user1223484
Nov 16 '18 at 13:20
Hello. Thank you for your help. The problem is if I remove my domain from cors list the problem is little different: SEC7120: [CORS] The origin 'xxxxxxxxx.sharepoint.com' did not find 'xxxxxxxxxx.sharepoint.com' in the Access-Control-Allow-Origin response header for cross-origin resource at 'xxxxxxxxxxx.azurewebsites.net/api/Function1?name=test
– user1223484
Nov 16 '18 at 13:20
If I call my function directly from web browser then I must login and after that everything works...But from javascript there still same error.
– user1223484
Nov 16 '18 at 22:10
If I call my function directly from web browser then I must login and after that everything works...But from javascript there still same error.
– user1223484
Nov 16 '18 at 22:10
if you remove all cors from the portal, you have to send the header in the response manually
– Thomas
Nov 18 '18 at 4:35
if you remove all cors from the portal, you have to send the header in the response manually
– Thomas
Nov 18 '18 at 4:35
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53327379%2fjavascript-call-of-azure-function-with-ad-authentification-from-sharepoint-onlin%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53327379%2fjavascript-call-of-azure-function-with-ad-authentification-from-sharepoint-onlin%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Likely related to github.com/Azure/azure-functions-host/issues/620, see this issue too: stackoverflow.com/questions/53321897/…
– Marie Hoeger
Nov 16 '18 at 0:30
Hello. Thank you for your help. The problem is if I remove my domain from cors list the problem is little different: SEC7120: [CORS] The origin 'xxxxxxxxx.sharepoint.com' did not find 'xxxxxxxxxx.sharepoint.com' in the Access-Control-Allow-Origin response header for cross-origin resource at 'xxxxxxxxxxx.azurewebsites.net/api/Function1?name=test
– user1223484
Nov 16 '18 at 13:20
If I call my function directly from web browser then I must login and after that everything works...But from javascript there still same error.
– user1223484
Nov 16 '18 at 22:10
if you remove all cors from the portal, you have to send the header in the response manually
– Thomas
Nov 18 '18 at 4:35