External login 就是指通过 Google, Microsoft, Facebook account 做登入.

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/?view=aspnetcore-5.0&tabs=visual-studio

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-5.0 (Microsoft)

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/google-logins?view=aspnetcore-5.0 (Google)

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/facebook-logins?view=aspnetcore-5.0 (Facebook)

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/other-logins?view=aspnetcore-5.0 (其它)

但是没有 Apple

Microsoft account

services.AddAuthentication().AddMicrosoftAccount(options =>
{
options.ClientId = "client id";
options.ClientSecret = "client secret";
options.SaveTokens = true;
options.Scope.Add("https://graph.microsoft.com/User.ReadBasic.All");
options.Scope.Add("https://graph.microsoft.com/Calendars.ReadWrite");
options.Scope.Add("https://graph.microsoft.com/Mail.ReadWrite");
options.Scope.Add("offline_access");
});

也可以获取到 mail 和 calendar 等等的权限, offline_access 就是要求 refresh token 咯.

所有 permission scope 在这里 : https://docs.microsoft.com/en-us/graph/permissions-reference#calendars-permissions

下面是关于 sign in 的流程, 可以去 identity scaffold template 看

这样可以获取到所有注册的 providers

var externalLoginProviders = (await signInManager.GetExternalAuthenticationSchemesAsync()).ToList();

redirect 用户到 third party 授权页面

public IActionResult OnPostExternalLogin([FromForm] ExternalLoginDto dto)
{
var properties = _signInManager.ConfigureExternalAuthenticationProperties(dto.Provider, "/account/login"); // callback url
return new ChallengeResult(dto.Provider, properties);
}

获取 profile 和 token infomation

var info = await _signInManager.GetExternalLoginInfoAsync();

里面基本上什么都有, name, email, access token, refresh token. 然后就可以做很多事情了

测试的时候经常需要 clear 授权, Microsoft account 是在这里 clear https://account.live.com/consent/Manage?mkt=en-US

Google Account

怎样去 google cloud 申请 app client

https://developers.google.com/identity/sign-in/web/sign-in

google 规定挺多的, 如果是 internal use 需要 google workspace 如果是 public 用需要 verify company.

不然就只可以 set 几个 test user 去玩玩.

然后它不可以通过 local ip 来测试. 一定要发布到网站. redirect url 一定要是真的域名. 域名也需要 verify.

等下次我认证搞的时候才 test 弄呗.

Facebook Account

照着做就可以了 facebook 可以 local test 只是 privacy policy page 必须放一个 online 的 url (要可以访问的)

测试时可以到这里移除 facebook 的授权

request permission 不是用 scope 的方式, 而是通过在 client app 里面 setting, 而且需要很多同意. 感觉 facebook 对这块可能比较严格.

Asp.net core 学习笔记之 authen + autho + oidc + oauth + spa 第九篇 (external login)的更多相关文章

  1. Asp.Net Core学习笔记:入门篇

    Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...

  2. ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探

    前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...

  3. Asp.net Core学习笔记

    之前记在github上的,现在搬运过来 变化还是很大的,感觉和Nodejs有点类似,比如中间件的使用 ,努力学习ing... 优点 不依赖IIS 开源和跨平台 中间件支持 性能优化 无所不在的依赖注入 ...

  4. ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用

    前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...

  5. ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置

    前言 说道配置文件,基本大多数软件为了扩展性.灵活性都会涉及到配置文件,比如之前常见的app.config和web.config.然后再说.NET Core,很多都发生了变化.总体的来说技术在进步,新 ...

  6. ASP.NET Core 学习笔记 第五篇 ASP.NET Core 中的选项

    前言 还记得上一篇文章中所说的配置吗?本篇文章算是上一篇的延续吧.在 .NET Core 中读取配置文件大多数会为配置选项绑定一个POCO(Plain Old CLR Object)对象,并通过依赖注 ...

  7. asp.net.core学习笔记1:swagger的使用和webapi接收Jobject对象

    环境:asp.net.core 3.1 (一觉醒来官方已经不推荐3.0了,于是没有任何core经验,也只能开始了3.1的开发学习) 由于现有项目前后端分离.微服务化日趋流行,所以上手不采用web应用( ...

  8. Asp.net core 学习笔记 ( Data protection )

    参考 : http://www.cnblogs.com/xishuai/p/aspnet-5-identity-part-one.html http://cnblogs.com/xishuai/p/a ...

  9. Asp.net core 学习笔记 SignalR

    refer : https://kimsereyblog.blogspot.com/2018/07/signalr-with-asp-net-core.html https://github.com/ ...

  10. Asp.net core (学习笔记 路由和语言 route & language)

    https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1 https://doc ...

随机推荐

  1. 重写Save()的两种方法

    # 重新Save()def save(self, force_insert=False, force_update=False, using=None, update_fields=None): su ...

  2. css 蛇形排序

    先看效果 需求: 一个[ 4  * ?]的网格布局,奇数行 布局 从左往右,偶数行 布局 从右往左. 思路1: js将数组按4个每份进行分割,将偶数份进行反向,然后再将分割后的数据,重新组装.( 太麻 ...

  3. php使用jwt作登录验证

    JWT官网 https://jwt.io/ 选择第一个 composer require firebase/php-jwt use Firebase\JWT\ExpiredException;use ...

  4. ORA-01658创建表或索引报错分析

    一.报错信息 某项目最近在 SQL Loader 导数据时偶尔会报错,类似如下: SQL loader ORA-01658 unable to creale INITIAL extent for se ...

  5. c# 多线程环境下控制对共享资源访问的办法

    Monitor: 定义:Monitor 是 C# 中最基本的同步机制,通过 Enter 和 Exit 方法来控制对共享资源的访问.它提供了排他锁的功能,确保在任何时刻只有一个线程可以访问共享资源. 优 ...

  6. 【FastDFS】04 Docker搭建

    直接拉取镜像,创建容器并运行容器一把梭哈: docker run -d --restart=always \ --privileged=true \ --net=host \ --name=fastd ...

  7. NVIDIA机器人仿真项目 —— Isaac Gym - Preview Release

    地址: https://developer.nvidia.com/isaac-gym 过期代码库地址:(已不再维护的代码库,现已由isaac gym项目合并到isaac sim项目)(2022年开始停 ...

  8. 如何在jax框架的jit中快速的实现循环结构 —— Jax框架的jit编译是否可以使用循环结构

    相关: Jax框架的jit编译是否可以使用循环结构,如果使用循环结构需要注意什么 前文中给出了jit下使用python做循环结构的代码,下面再次给出这个代码,这个代码为jupyter-notebook ...

  9. 强化学习算法之DQN算法中的经验池的实现,experience_replay_buffer部分的实现

    本文的相关链接: github上DQN代码的环境搭建,及运行(Human-Level Control through Deep Reinforcement Learning)conda配置 ----- ...

  10. 高校校园网下电脑IP是不是公网IP

    突然想到一个问题,那就是高校校园网中的IP地址是不是公网IP,如果不是公网IP那么就是使用net后的共享IP,还或者是部分人用公网IP然后另一部分人使用net后的共享IP??? =========== ...