More Middlewares for authorization of web apps for ASP.NET Core
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
samples/SocialSample
src
.gitattributes
.gitignore
LICENSE-2.0.txt 😃 add LICENSE-2.0.txt Jul 6, 2015
MoreAuthentication.sln
NuGet.Config
README.md
global.json

README.md

More Authentication Middleware for ASP.NET Core License

This project is an ASP.NET Core middleware that enables an application to support more authentication workflow.

目前支持的授权平台

文档 NuGet
360 OAuth2.0 授权
百度 OAuth2.0 授权
豆瓣 OAuth2.0 授权
淘宝 OAuth2.0 授权
腾讯 OAuth2.0 授权
网易 OAuth2.0 授权
微信 OAuth2.0 授权
新浪 OAuth2.0 授权
小米 OAuth2.0 授权
优酷 OAuth2.0 授权
易信 OAuth2.0 授权

更多关于 OAuth 2.0 的信息,可参考 oauth.netOAuth 2.0 中文文档

使用步骤

该项目是根据 ASP.NET Core Security 写的众多账号平台授权登录。

所以,你可以跟 Microsoft.AspNetCore.Authentication.* 下的众多账号授权组件一样使用:

  1. Startup 中的 ConfigureServices 添加配置 Identity、Token、Authentication、CookieAuthentication 等服务
  2. Startup 中的 Configure 里 直接添加配置并使用 这些服务。

示例代码

在这里,就贴关键的部分(以豆瓣为例),有关账号授权的较为完整代码,建议参考官方提供的例子 —— Music Store 或者查看 Security sample

根据文档建议,开发时可使用 Microsoft.Extensions.SecretManager 存储相关数据, 需要在 ConfigureServices 中使用 IConfigurationBuilder.AddUserSecrets()

目前大概有两种方法添加数据,一种是命令行(必须确保 project.jsonuserSecretsId 值唯一);另一种是在 Visual Studio 右键项目中,点击“管理用户机密”,会自动添加 userSecretsId

  1. Visual Studio 2015 默认没有将 dnx runtime 放入 %PATH% 中,所以必须先将其放入,或者使用 dnvm upgrade 自动添加
  2. dnu commands install Microsoft.Extensions.SecretManager
  3. user-secret set Authentication:Douban:ApiKey 00d***060
  4. user-secret set Authentication:Douban:Secret 39**b4

打开项目机密文件,可以得到类似这样的 json 结构:

{
  "Authentication:Douban:ApiKey": "00d***060",
  "Authentication:Douban:Secret": "39**b4"
}
...
// ConfigureServices 下
services.AddAuthentication(options => options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme);

...
// Configure 下
app.UseDoubanAuthentication(new DoubanOption
{
    ApiKey = Configuration["Authentication:Douban:ApiKey"],
    Secret = Configuration["Authentication:Douban:Secret"]
});

...

注意

目前,仅在 ASP.NET Core beta6+ 有效; 最后要说的,也是显而易见的是,目前的授权模式为 Server-side