Infinite auth loop when using RunProxy and OpenIdConnect2019 Community Moderator ElectionAngular2 CORS error when being redirected from API to IdentityserverHow to resolve No 'Access-Control-Allow-Origin' header is present on the requested resource in ASP.NET Boilerplate?CORS error after adding custom client service to Identity Server 4How to set redirect_uri protocol to HTTPS in Azure Web AppsRequest method POST not allowed in CORS policyCorrelation failed in asp.net coreAngular 6 - Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' headerHow it happen. Identity Server4 User Login page redirection. Purpose of Redirect UrlsAccess to XMLHttpRequest at 'http://localhost…' from origin has been blocked by CORS policy:ASP.NET Core 2.1 cookie authentication appears to have server affinity
Is there any relevance to Thor getting his hair cut other than comedic value?
PTIJ: Is all laundering forbidden during the 9 days?
Being asked to review a paper in conference one has submitted to
Can the Shape Water Cantrip be used to manipulate blood?
How can I handle a player who pre-plans arguments about my rulings on RAW?
Did Amazon pay $0 in taxes last year?
Deal the cards to the players
Is there a way to find out the age of climbing ropes?
Why did the Cray-1 have 8 parity bits per word?
Where is the fallacy here?
What is better: yes / no radio, or simple checkbox?
Relationship between the symmetry number of a molecule as used in rotational spectroscopy and point group
How to fix my table, centering of columns
How can I conditionally format my HTML table?
How does insurance birth control work?
A bug in Excel? Conditional formatting for marking duplicates also highlights unique value
Are there other characters in the Star Wars universe who had damaged bodies and needed to wear an outfit like Darth Vader?
Quitting employee has privileged access to critical information
How to mitigate "bandwagon attacking" from players?
I encountered my boss during an on-site interview at another company. Should I bring it up when seeing him next time?
Sometimes a banana is just a banana
Is there a math equivalent to the conditional ternary operator?
Why do phishing e-mails use faked e-mail addresses instead of the real one?
Levi-Civita symbol: 3D matrix
Infinite auth loop when using RunProxy and OpenIdConnect
2019 Community Moderator ElectionAngular2 CORS error when being redirected from API to IdentityserverHow to resolve No 'Access-Control-Allow-Origin' header is present on the requested resource in ASP.NET Boilerplate?CORS error after adding custom client service to Identity Server 4How to set redirect_uri protocol to HTTPS in Azure Web AppsRequest method POST not allowed in CORS policyCorrelation failed in asp.net coreAngular 6 - Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' headerHow it happen. Identity Server4 User Login page redirection. Purpose of Redirect UrlsAccess to XMLHttpRequest at 'http://localhost…' from origin has been blocked by CORS policy:ASP.NET Core 2.1 cookie authentication appears to have server affinity
Before getting to the question - which is how do we solve the infinite authentication loop - some information regarding architecture.
We are using .net core 2.1.
We have 2 services. The first one is the one that's facing the public traffic, does the TLS termination and figures out if the request should be passed on or not. (Perhaps to other servers) When this server figures out that the request is made to a certain path, it uses RunProxy
method to map the request to the 'other' service using http. That code looks like below:
app.MapWhen(<MatchRequestCondition>, proxyTime => proxyTime.RunProxy(
new ProxyOptions
Scheme = "http",
Host = "localhost",
Port = "1122"
));
As an example, if you visit https://localhost:1234/abc - this would be mapped to http://localhost:1122 - which is the port where the second application lives.
Now, this secondary service uses OpenIdConnect - the configuration of it looks like below.
// Configure Services method
services.AddMvc(mvcOptions =>
AuthorizationPolicy policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
mvcOptions.Filters.Add(new AuthorizeFilter(policy));
);
services.AddAuthentication(options =>
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
)
.AddCookie()
.AddOpenIdConnect(auth =>
auth.ClientId = "<client_id>";
auth.ClientSecret = "<client_secret>";
auth.Authority = "<authority>";
);
// Configure method
app.UseAuthentication();
Here's where it gets interesting:
If I visit the second node (the one that's meant to receive traffic from the first one only) directly - like http://localhost:1122 - I'm redirected to sign-in and everything works correctly.
But if I visit the first node (which is the one that the real traffic should be coming from) - it goes into a crazy authentication loop.
Any ideas to what might be the root cause? How is this different than having a load balancer in front of the regular service? Or perhaps it's because I'm using the cookie middleware in the secondary service?
asp.net-core asp.net-authentication
add a comment |
Before getting to the question - which is how do we solve the infinite authentication loop - some information regarding architecture.
We are using .net core 2.1.
We have 2 services. The first one is the one that's facing the public traffic, does the TLS termination and figures out if the request should be passed on or not. (Perhaps to other servers) When this server figures out that the request is made to a certain path, it uses RunProxy
method to map the request to the 'other' service using http. That code looks like below:
app.MapWhen(<MatchRequestCondition>, proxyTime => proxyTime.RunProxy(
new ProxyOptions
Scheme = "http",
Host = "localhost",
Port = "1122"
));
As an example, if you visit https://localhost:1234/abc - this would be mapped to http://localhost:1122 - which is the port where the second application lives.
Now, this secondary service uses OpenIdConnect - the configuration of it looks like below.
// Configure Services method
services.AddMvc(mvcOptions =>
AuthorizationPolicy policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
mvcOptions.Filters.Add(new AuthorizeFilter(policy));
);
services.AddAuthentication(options =>
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
)
.AddCookie()
.AddOpenIdConnect(auth =>
auth.ClientId = "<client_id>";
auth.ClientSecret = "<client_secret>";
auth.Authority = "<authority>";
);
// Configure method
app.UseAuthentication();
Here's where it gets interesting:
If I visit the second node (the one that's meant to receive traffic from the first one only) directly - like http://localhost:1122 - I'm redirected to sign-in and everything works correctly.
But if I visit the first node (which is the one that the real traffic should be coming from) - it goes into a crazy authentication loop.
Any ideas to what might be the root cause? How is this different than having a load balancer in front of the regular service? Or perhaps it's because I'm using the cookie middleware in the secondary service?
asp.net-core asp.net-authentication
What is yourMatchRequestCondition
? Probably, you don't transfer oidc flow to your background service where authentication is made.
– agua from mars
17 hours ago
This was a good suggestion, but it didn't work. What's even more weird is I'm not even getting the auth - it goes into the loop straightaway
– Mavi Domates
12 hours ago
add a comment |
Before getting to the question - which is how do we solve the infinite authentication loop - some information regarding architecture.
We are using .net core 2.1.
We have 2 services. The first one is the one that's facing the public traffic, does the TLS termination and figures out if the request should be passed on or not. (Perhaps to other servers) When this server figures out that the request is made to a certain path, it uses RunProxy
method to map the request to the 'other' service using http. That code looks like below:
app.MapWhen(<MatchRequestCondition>, proxyTime => proxyTime.RunProxy(
new ProxyOptions
Scheme = "http",
Host = "localhost",
Port = "1122"
));
As an example, if you visit https://localhost:1234/abc - this would be mapped to http://localhost:1122 - which is the port where the second application lives.
Now, this secondary service uses OpenIdConnect - the configuration of it looks like below.
// Configure Services method
services.AddMvc(mvcOptions =>
AuthorizationPolicy policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
mvcOptions.Filters.Add(new AuthorizeFilter(policy));
);
services.AddAuthentication(options =>
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
)
.AddCookie()
.AddOpenIdConnect(auth =>
auth.ClientId = "<client_id>";
auth.ClientSecret = "<client_secret>";
auth.Authority = "<authority>";
);
// Configure method
app.UseAuthentication();
Here's where it gets interesting:
If I visit the second node (the one that's meant to receive traffic from the first one only) directly - like http://localhost:1122 - I'm redirected to sign-in and everything works correctly.
But if I visit the first node (which is the one that the real traffic should be coming from) - it goes into a crazy authentication loop.
Any ideas to what might be the root cause? How is this different than having a load balancer in front of the regular service? Or perhaps it's because I'm using the cookie middleware in the secondary service?
asp.net-core asp.net-authentication
Before getting to the question - which is how do we solve the infinite authentication loop - some information regarding architecture.
We are using .net core 2.1.
We have 2 services. The first one is the one that's facing the public traffic, does the TLS termination and figures out if the request should be passed on or not. (Perhaps to other servers) When this server figures out that the request is made to a certain path, it uses RunProxy
method to map the request to the 'other' service using http. That code looks like below:
app.MapWhen(<MatchRequestCondition>, proxyTime => proxyTime.RunProxy(
new ProxyOptions
Scheme = "http",
Host = "localhost",
Port = "1122"
));
As an example, if you visit https://localhost:1234/abc - this would be mapped to http://localhost:1122 - which is the port where the second application lives.
Now, this secondary service uses OpenIdConnect - the configuration of it looks like below.
// Configure Services method
services.AddMvc(mvcOptions =>
AuthorizationPolicy policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
mvcOptions.Filters.Add(new AuthorizeFilter(policy));
);
services.AddAuthentication(options =>
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
)
.AddCookie()
.AddOpenIdConnect(auth =>
auth.ClientId = "<client_id>";
auth.ClientSecret = "<client_secret>";
auth.Authority = "<authority>";
);
// Configure method
app.UseAuthentication();
Here's where it gets interesting:
If I visit the second node (the one that's meant to receive traffic from the first one only) directly - like http://localhost:1122 - I'm redirected to sign-in and everything works correctly.
But if I visit the first node (which is the one that the real traffic should be coming from) - it goes into a crazy authentication loop.
Any ideas to what might be the root cause? How is this different than having a load balancer in front of the regular service? Or perhaps it's because I'm using the cookie middleware in the secondary service?
asp.net-core asp.net-authentication
asp.net-core asp.net-authentication
asked 19 hours ago
Mavi DomatesMavi Domates
1,69211022
1,69211022
What is yourMatchRequestCondition
? Probably, you don't transfer oidc flow to your background service where authentication is made.
– agua from mars
17 hours ago
This was a good suggestion, but it didn't work. What's even more weird is I'm not even getting the auth - it goes into the loop straightaway
– Mavi Domates
12 hours ago
add a comment |
What is yourMatchRequestCondition
? Probably, you don't transfer oidc flow to your background service where authentication is made.
– agua from mars
17 hours ago
This was a good suggestion, but it didn't work. What's even more weird is I'm not even getting the auth - it goes into the loop straightaway
– Mavi Domates
12 hours ago
What is your
MatchRequestCondition
? Probably, you don't transfer oidc flow to your background service where authentication is made.– agua from mars
17 hours ago
What is your
MatchRequestCondition
? Probably, you don't transfer oidc flow to your background service where authentication is made.– agua from mars
17 hours ago
This was a good suggestion, but it didn't work. What's even more weird is I'm not even getting the auth - it goes into the loop straightaway
– Mavi Domates
12 hours ago
This was a good suggestion, but it didn't work. What's even more weird is I'm not even getting the auth - it goes into the loop straightaway
– Mavi Domates
12 hours ago
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%2f55021509%2finfinite-auth-loop-when-using-runproxy-and-openidconnect%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%2f55021509%2finfinite-auth-loop-when-using-runproxy-and-openidconnect%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
What is your
MatchRequestCondition
? Probably, you don't transfer oidc flow to your background service where authentication is made.– agua from mars
17 hours ago
This was a good suggestion, but it didn't work. What's even more weird is I'm not even getting the auth - it goes into the loop straightaway
– Mavi Domates
12 hours ago