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. 从基础到高级应用,详解用Python实现容器化和微服务架构

    本文分享自华为云社区<Python微服务与容器化实践详解[从基础到高级应用]>,作者: 柠檬味拥抱. Python中的容器化和微服务架构实践 在现代软件开发中,容器化和微服务架构已经成为主 ...

  2. 第二章 编译FFmpeg并开启H.264编码

    目录 前言 1. 下载x264 2. 编译x264 3. 编译FFmpeg 3.1 可能出现的问题和解决方法 3.1.1 ERROR: x264 not found using pkg-config ...

  3. 一键导入抓包数据生成HTTP请求

    Jmeter一键导入抓包数据生成HTTP请求.路径:工具->Import from cURL 在弹框里粘贴cURL,点击"Create Test Plan"会自动生成HTTP ...

  4. Jmeter让线程循环变量值不重复

    我们定义用户参数时为了保证某个参数值不重复会设置为随机变量 1.使用[用户定义的变量]组件,传入随机值如"HELLO${__Random(100,200,)}_${__counter(FAL ...

  5. Windows安装虚拟机软件-VirtualBox

    1.VirtualBox简介 VirtualBox号称是最强的开源免费虚拟机软件,它不仅具有丰富的特色,而且性能也很优异. 它简单易用,可虚拟的系统包括Windows.Mac OS X.Linux.O ...

  6. 【JavaWeb】HttpClient

    需要的依赖: <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <de ...

  7. 【转载】 优必选悉尼 AI 研究院何诗怡:基于课程学习的强化多标签图像分类算法 | 分享总结

    原文地址: https://baijiahao.baidu.com/s?id=1603057342167437458&wfr=spider&for=pc 来源"雷锋网&quo ...

  8. 中国AI领域超越美国的拐点在哪 —— 国产AI芯片量产化的成本接近于美国成熟AI芯片的成本

    作为AI领域的一个大头兵,本是没有资格去谈论high level层面的东西的,只不过总有些忍不得说的事情. 今天这里就说下个人对中国AI发展的一个观点或是预测,在我看来中国AI领域超越美国的拐点就在于 ...

  9. Ubuntu 18.04在已经安装Docker CE后如何安装NVIDIA-Docker,以使docker容器内可以使用宿主机显卡

    注意: 本文是在电脑上已经安装好docker环境的前提下进行的. docker环境如何安装参照前文. 本文内容节选自:  https://baimafujinji.blog.csdn.net/arti ...

  10. IntelliJ IDEA 2024.2 发布:Spring Data JPA即时查询、自动补全cron表达式

    今早看到,IntelliJ IDEA 2024.2 发布的邮件提示,看了一眼这个版本更新的新特性真的太适合我了!也许这些能力对关注DD的小伙伴也有帮助,所以搞篇博客介绍和推荐一下.下面就来一起看看这个 ...