You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The app is in production, I haven't upgraded MSAL, but started seeing this issue
Issue description and reproduction steps
Some third party Identity Providers [namely Broadcom Siteminder] do NOT allow the usage of "+" to represent a space in URLs, in particular to separate scopes in the "authorize" endpoint.
So the default scope string "openid profile offline_access", being encoded in the URL string as "openid+profile+offline_access", is interpreted by the IDP as a SINGLE scope "openid+profile+offline_access", which is of course rejected.
Steps to reproduce: try to log in into Siteminder.
Relevant code snippets
No response
Expected behavior
No response
Identity provider
Other
Regression
No response
Solution and workarounds
The solution I propose requires a minimal change: just comment out the line 34 in CoreHelpers.cs:
publicstaticstringUrlEncode(stringmessage){if(string.IsNullOrEmpty(message)){returnmessage;}message=Uri.EscapeDataString(message);//message = message.Replace("%20", "+"); // THIS IS NOT NEEDEDreturnmessage;}
The replacement of "%20" with "+" is NOT needed and this action actually harms compatibility.
There is NO workaround for this issue. In order to support SiteMinder I had to fork MSAL.NET to apply this change.
The text was updated successfully, but these errors were encountered:
Library version used
4.66.2
.NET version
.NET Framework 4.8
Scenario
PublicClient - desktop app
Is this a new or an existing app?
The app is in production, I haven't upgraded MSAL, but started seeing this issue
Issue description and reproduction steps
Some third party Identity Providers [namely Broadcom Siteminder] do NOT allow the usage of "+" to represent a space in URLs, in particular to separate scopes in the "authorize" endpoint.
So the default scope string "openid profile offline_access", being encoded in the URL string as "openid+profile+offline_access", is interpreted by the IDP as a SINGLE scope "openid+profile+offline_access", which is of course rejected.
Steps to reproduce: try to log in into Siteminder.
Relevant code snippets
No response
Expected behavior
No response
Identity provider
Other
Regression
No response
Solution and workarounds
The solution I propose requires a minimal change: just comment out the line 34 in CoreHelpers.cs:
The replacement of "%20" with "+" is NOT needed and this action actually harms compatibility.
There is NO workaround for this issue. In order to support SiteMinder I had to fork MSAL.NET to apply this change.
The text was updated successfully, but these errors were encountered: