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. Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置”

    1. Spring MVC 中的拦截器的使用"拦截器基本配置" 和 "拦截器高级配置" @ 目录 1. Spring MVC 中的拦截器的使用"拦截器 ...

  2. IntersectionObserver 实现图片懒加载

    背景 最近使用express做导航类型网站,因为这个是后端jade渲染,浏览器拿到页面之后,解析出来dom结构,导致100+的图片瞬间加载,严重浪费了宽带资源,加重服务器负担,因此打算延迟加载图片 模 ...

  3. 题解:AT_abc357_f [ABC357F] Two Sequence Queries

    题意 维护一个数据结构,支持两个数列的区间求和,和查询区间内两数列各元素积的和. 分析 线段树万岁! 这道题要维护两个序列,所以线段树中要同时存储两个区间和.但还要在维护一个信息,是该区间内两序列元素 ...

  4. Divide Interval 题解

    背景 太逊了,调了三次才调出来,所以写篇题解寄念.LC好睿智 题意 给你两个数 \(a,b\),现在要从 \(a\) 跑到 \(b\),每次可以将当前的 \(a\) 拆分成 \(2^n\times m ...

  5. 从DDPM到DDIM (一) 极大似然估计与证据下界

    从DDPM到DDIM (一) 极大似然估计与证据下界   现在网络上关于DDPM和DDIM的讲解有很多,但无论什么样的讲解,都不如自己推到一遍来的痛快.笔者希望就这篇文章,从头到尾对扩散模型做一次完整 ...

  6. 【Java】图片压缩处理

    需求如下: 一些图片太大了,手机拍摄上传的图片有5M大小,然后阅读的内容其实不需要特别高的分辨率 1M以下的图片并不需要被压缩,压缩只是针对部分过大的图片处理 图片处理库: 我看了几篇,还是选代码量最 ...

  7. 【Mybatis】01 概述 & 快速入门Part1

    什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射. MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作. MyB ...

  8. 【转载】AI的剥削:肯尼亚工人训练ChatGPT,看大量有害内容心理受伤——AI新时代下剥削

    原文地址: https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_90623597686514 ...

  9. Apache DolphinScheduler 3.2.1 版本发布:增强功能与安全性的全面升级

    近期,Apache DolphinScheduler 社区激动地宣布 3.2.1 版本的发布.此次更新不仅着力解决了前一版本(3.2.0)中遗留的问题,而且引入了一系列的功能增强和优化措施. 原先的问 ...

  10. 初探 Rust 语言与环境搭建

    1. Rust 简介 Rust 的历史 起源:Rust 语言最初由 Mozilla 研究员 Graydon Hoare 于 2006 年开始设计,并于 2009 年首次公开. 开发:Rust 是 Mo ...