8

.netcore第三方登录授权:10分钟急速接入

 3 years ago
source link: https://www.cnblogs.com/xiongze520/p/15039407.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client



1093832-20210721134336211-921993995.png

很多对外应用的开发都考虑接入第三方登录来提高用户的体验感,避免用户进行繁琐的注册登录(登录后的完善资料必不可免)。

而QQ、微信、支付宝、淘宝、微博等应用就是首选目标(无他,用户群体大,支持发开发者授权应用)。

可以点击下面的地址体验一下。

https://oauthlogin.net/

下面介绍基于OAuth2 的登录组件 


1、创建项目

这里使用 GitHub 登录做演示,因为GitHub的 开发者应用程序 的创建支持localhost的方式访问,可以本地开发直接调用。

新建一个 Asp.Net Core Web 应用(模型-视图-控制器) 项目,项目名 GithubLogin (你也可以起一个其他的名称),选择 .Net Core 3.1 (长期支持)  后创建项目。

2、安装NuGet包

MrHuo.OAuth.Github 

选择1.0.0进行安装

3、创建GitHub授权应用

访问 https://github.com/settings/applications/new 网站

注意:GitHub网站速度较慢,如果显示 无法访问此网站 刷新一下多执行几次,或者使用第二种入口注册。

访问 https://github.com/ 进行登录,在右上角的头像图标旁边下拉点击设置 Settings

在出来的页面点击开发者设置  Developer settings  ,

选择 OAuth App 应用程序,点击 New OAuth App 创建OAuth应用程序

4、配置授权key

把界面里的 Client IDClient secret,连同上一个界面里填写的 Authorization callback URL 全部填写到配置文件对应位置。现在配置文件 appsettings.json 是这样的:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "oauth": {
    "github": {
      "app_id": "c147cxxxxxxxxxxxxxxxxxxe6ea2", //OAuth App创建的Client ID
      "app_key": "03ef6xxxxxxxxxbe6f4f0febef5", //OAuth App创建的Client secrets
      "redirect_uri": "http://localhost:33180/oauth/githubcallback", //回调地址(这个地址是你自己写的,后面授权成功后做自己需要的功能) 
      "scope": "repo"  
    }
  }
}

5、编写代码

在 Startup.cs 文件的ConfigureServices方法中注入组件:

services.AddSingleton(new GithubOAuth(OAuthConfig.LoadFrom(Configuration, "oauth:github")));

    // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            //注入GitHub授权组件
            services.AddSingleton(new GithubOAuth(OAuthConfig.LoadFrom(Configuration, "oauth:github")));
        }

Controllers新建OAuthController.cs类,里面的代码如下:

using Microsoft.AspNetCore.Mvc;
using MrHuo.OAuth.Github;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace ThirdPartyLogin.Controllers
{
    public class OAuthController : Controller
    {
        #region GitHub授权+回调
        //发起第三方授权申请
        [HttpGet("oauth/github")]
        public IActionResult Github([FromServices] GithubOAuth githubOAuth)
        {
            return Redirect(githubOAuth.GetAuthorizeUrl());
        }

        //第三方授权成功后回调方法
        [HttpGet("oauth/githubcallback")]
        public async Task<IActionResult> GithubCallback(
            [FromServices] GithubOAuth githubOAuth,
            [FromQuery] string code)
        {
            return Json(await githubOAuth.AuthorizeCallback(code));
        }
        #endregion
    }
}

然后运行程序,在地址栏手动输入访问 发起第三方授权申请 的方法:http://localhost:33180/oauth/github 跳转到授权页面,

如下,点击绿色的按钮同意,然后授权成功,

成功后调用我们之前配置的回调方法,在这里我们就可以自定义操作了,入库或者其他。

 授权成功返回的内容如下:

 经过指定处理后,可视化显示为:

1093832-20210721152611751-1813895557.png

到这里一个简单的第三方GitHub授权指定网站登录就完成了,其他的授权都是大同小异,需要注意的是我们用到的组件需要去找一下,然后去各个平台申请一个key。

当然,我这里是白嫖的 开发者精选资讯 大佬的,更多用法可以直接去下载demo下来看,最后附上链接,大家可以去看看

1093832-20210531090859260-762296935.png

Recommend

  • 48
    • www.woshipm.com 5 years ago
    • Cache

    微信授权登录中的惊艳设计

    在本文中,作者盘点了微信授权登录设计中的创建不同身份功能、以及这一功能背后的设计思路与原理。 现在很多网站产品和APP产品都不在固执的建立自己的用户账户体系,而是使用了微信授权登录的方式来减小获取新用户的门槛,这一方式对产品方和用户来说都有很多好处...

  • 6

    安卓调试新浪微博sdk授权登录时使用debug的签名文件 – ruquan.z – github技术博客,成长在于积累。 ruquan.z github技术博客,成长在于积累。...

  • 22

    Overview微信的openSDK在1.8.6版本支持了Universal Links方式的跳转,在使用新版本的时候需要设置Universal Links。 Universal Links 是在WWDC 2005提出了iOS9的新特性之一。 具体...

  • 11

    渗透技巧——利用tscon实现未授权登录远程桌面 0x00 前言 Windows系统下,tscon可被用来切换远程桌面的会话。正常情况下,切换会话时需要提供登录密码,但通过特殊的利用方法能够绕过验证,不输入密码实现未授权登录。...

  • 11

    新年新气象,趁着新年的喜庆,肝了十来天,终于发了第一版,希望大家喜欢。 如果有不喜欢看文字的童鞋,可以直接看下面的地址体...

  • 3

    Vue3项目中微信授权登录的优雅实现微信授权登录是做微信公众号开发一直绕不开的话题,而且整个授权登录流程的实现,是需要前后端配合一起完成的。在过去前后端还未分离的年代,也许我们前...

  • 6

    1.开发前准备 corpid 每个企业都拥有唯一的corpid,获取此信息可在管理后台“我的企业”-“企业信息”下查看“企业ID” secret secret是企业应用里面用于保障数据安全的“钥匙”,每一个应用都有一个独立的访问密钥,为了保证数据的安...

  • 7
    • developer.51cto.com 2 years ago
    • Cache

    微服务实现单点登录(SSO)授权服务器

    一、单点登录SSO介绍目前每家企业或者平台都存在不止一套系统,由于历史原...

  • 9

    JS实现华为账号授权服务,一键登录! 作者:龙眼Litchi 2022-07-22 14:32:29 本文将介绍如何在HarmonyOS上集成HMS华为账号登录服务。

  • 4

    基于.NetCore+React单点登录系统 对于有多个应用系统...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK