Microsoft登录无需重定向URL即可运行

Heinzlmaen

当我在Blazor应用中使用Microsoft OAuth登录时,即使我未指定重定向URI authenticateResult.Succeeded也为true。它的失败是用于谷歌,如果我没有我的URI添加到OAuth用户端。

Imo,根据OAuth2.0规范,如果没有重定向URI,它将不起作用:

授权服务器必须要求公共客户端,应该要求机密客户端注册其重定向URI。

我正在将Microsoft.AspNetCore.Authentication.MicrosoftAccount 3.0.3与.NET Core 3.0一起使用

public class ExternalLoginModel : PageModel
{
    public IActionResult OnGetAsync(string externalAuthType, string returnUrl)
    {
        var authenticationProperties = new AuthenticationProperties
        {
            RedirectUri = Url.Page("./externallogin",
            pageHandler: "Callback",
            values: new { returnUrl }),
        };

        return new ChallengeResult(externalAuthType, authenticationProperties);
    }

    public async Task<IActionResult> OnGetCallbackAsync(
        string returnUrl = null, string remoteError = null)
    {
        var authenticateResult = await HttpContext.AuthenticateAsync("External");

        if (!authenticateResult.Succeeded) // Should be false for Microsoft sign in
            return BadRequest();

        ...

        return LocalRedirect(returnUrl);
    }
}

将以下内容添加到我的启动中:

        services.AddAuthentication(o =>
        {
            o.DefaultSignInScheme = "External";
        }).AddCookie("External");
        services.AddAuthentication().AddGoogle(google =>
        {
            google.ClientId = Configuration["Authentication:Google:ClientId"];
            google.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
        });
        services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
        {
            microsoftOptions.ClientId = Configuration["Authentication:Microsoft:ClientId"];
            microsoftOptions.ClientSecret = Configuration["Authentication:Microsoft:ClientSecret"];
        });

我的应用程序的身份验证设置如下所示(我实际上在设置中使用localhost:12345,但这不是我的应用程序正在运行的..): 在此处输入图片说明

在此处输入图片说明

具有讽刺意味的是,最后一句话可能解释了这一点,但是我什至不知道MicrosoftAccount库正在使用哪个流,并且在谷歌搜索时我只会得到通用文档。

Heinzlmaen

当使用完全不同的域而不是具有不同端口的localhost时,它会按预期失败。我想那已经足够了。

另外,我未选中“ ID令牌”和“作为公共客户端处理应用程序”,因此,据我所知,应使用授权代码流

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无需先安装即可运行SBT

来自分类Dev

无需先安装即可运行SBT

来自分类Dev

MonoGame游戏无需安装即可运行吗?

来自分类Dev

无需配置即可运行交互式鱼

来自分类Dev

Dojo脚本中的Javascript函数无需调用即可运行

来自分类Dev

如何设置wireshark在Debian上无需root即可运行?

来自分类Dev

是否可以创建无需安装即可运行的NPM脚本?

来自分类Dev

Git Bash 和 Composer - 无需扩展即可运行

来自分类Dev

JavaScript 无需在 Laravel 中调用即可运行

来自分类Dev

无需重定向即可返回其他视图

来自分类Dev

飞镖:无需重新加载即可动态重定向

来自分类Dev

飞镖:无需重新加载即可动态重定向

来自分类Dev

无需连接请求即可重定向到管理界面

来自分类Dev

无需密码即可登录

来自分类Dev

无需密码即可登录

来自分类Dev

TFS内部版本定义,无需使用实验室管理即可运行测试

来自分类Dev

Leiningen:创建可执行的jar,使其无需Java -jar即可运行

来自分类Dev

JUnit测试器类无需主方法即可运行。如何完成/可能的?

来自分类Dev

Play框架2.3.x,无需控制台即可运行

来自分类Dev

编译Visual Studio程序以使其无需安装即可运行

来自分类Dev

Play框架2.3.x,无需控制台即可运行

来自分类Dev

批处理文件无需按键即可运行其他批处理文件

来自分类Dev

无需登录即可在启动时运行Thunderbird

来自分类Dev

如何解决Spring Security无需登录即可访问URL

来自分类Dev

如何解决Spring Security无需登录即可访问URL

来自分类Dev

登录后引用URL重定向

来自分类Dev

登录后重定向回相同的URL

来自分类Dev

Google OAuth登录重定向URL AWS

来自分类Dev

验证登录 URL 重定向的最佳方法

Related 相关文章

热门标签

归档