24 lines
614 B
C#
24 lines
614 B
C#
|
namespace Foxchat.Identity.Utils;
|
||
|
|
||
|
public static class OauthUtils
|
||
|
{
|
||
|
public static readonly string[] Scopes = ["identify", "chat_client"];
|
||
|
|
||
|
private static readonly string[] ForbiddenSchemes = ["javascript", "file", "data", "mailto", "tel"];
|
||
|
private const string OobUri = "urn:ietf:wg:oauth:2.0:oob";
|
||
|
|
||
|
public static bool ValidateRedirectUri(string uri)
|
||
|
{
|
||
|
if (uri == OobUri) return true;
|
||
|
try
|
||
|
{
|
||
|
var scheme = new Uri(uri).Scheme;
|
||
|
return !ForbiddenSchemes.Contains(scheme);
|
||
|
}
|
||
|
catch
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|