DotNetOpenAuth实践之搭建验证服务器
2021-01-15 20:13
标签:证书 src services 配置 auth llb binding OAuth2 win DotNetOpenAuth是OAuth2的.net版本,利用DotNetOpenAuth我们可以轻松的搭建OAuth2验证服务器,不废话,下面我们来一步步搭建验证服务器 本次搭建环境: .net4.5.1 ,DotNetOpenAuth v5.0.0-alpha3,MVC5 一、环境搭建 1、新建一个空的VS解决方案 2、添加验证服务器项目,项目选择MVC,不要自带的身份验证 3、使用Nuget添加DotNetOpenAuth v5.0.0-alpha3 输入DotNetOpenAuth 安装DotNetOpenAuth v5.0.0-alpha3 添加完成后 二、编写DotNetOpenAuth 验证服务器关键代码,实现功能 1、添加AuthorizationServerConfiguration.cs 这里的配置是为了添加方便管理,其实可以不用这个类 2、实现IClientDescription接口 3、实现IAuthorizationServerHost接口 4、实现OAuthController 5、初始化AuthorizationServerConfiguration 这里采用Windows签名证书 放到项目中 制作证书事注意:要加上-a sha1 -sky exchange 到此,基本代码就写完了,现在说说要注意的地方,OAuth2默认设置的请求是要求SSL的也就是必须是https//localhost:1111/OAuth/Token,然后我们现在不需要使用SSL加密请求,更改一下WebConfig文件 在WebConfig里面设置成如图中那样,就可以不用https访问了 6、我们F5运行项目 使用Post工具发送Post请求访问 http://localhost:53022/OAuth/token Body参数: 请求结果: 这样我们就拿到了access_token,通过这个access_token我们就可以访问资源服务器了 更新: OAuthController代码添加内容类型 鉴于有人不知道Windows签名制作,下篇我们一起来看看如何制作一个认证服务器可以使用的签名证书 DotNetOpenAuth实践之搭建验证服务器 标签:证书 src services 配置 auth llb binding OAuth2 win 原文地址:https://www.cnblogs.com/Alex80/p/13387883.html 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Security.Cryptography.X509Certificates;
5 using System.Web;
6
7 namespace IdefavAuthorizationServer.Code
8 {
9 ///
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using DotNetOpenAuth.Messaging;
6 using DotNetOpenAuth.OAuth2;
7
8 namespace IdefavAuthorizationServer.Code
9 {
10 public class Client : IClientDescription
11 {
12 ///
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Security.Cryptography;
5 using System.Web;
6 using DotNetOpenAuth.Messaging.Bindings;
7 using DotNetOpenAuth.OAuth2;
8 using DotNetOpenAuth.OAuth2.ChannelElements;
9 using DotNetOpenAuth.OAuth2.Messages;
10
11 namespace IdefavAuthorizationServer.Code
12 {
13 public class IdefavAuthorizationServerHost : IAuthorizationServerHost
14 {
15 ///
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Threading.Tasks;
5 using System.Web;
6 using System.Web.Mvc;
7 using DotNetOpenAuth.Messaging;
8 using DotNetOpenAuth.OAuth2;
9 using IdefavAuthorizationServer.Code;
10
11 namespace IdefavAuthorizationServer.Controllers
12 {
13 public class OAuthController : Controller
14 {
15 private readonly AuthorizationServer authorizationServer =
16 new AuthorizationServer(new IdefavAuthorizationServerHost(Common.Configuration));
17
18 public async Task Token()
19 {
20 var response = await authorizationServer.HandleTokenRequestAsync(Request);
21 return response.AsActionResult();
22 }
23 }
24 }
1 client_id:idefav
2 client_secret:1
3 grant_type:client_credentials
1 using System.Collections.Generic;
2 using System.Linq;
3 using System.Threading.Tasks;
4 using System.Web;
5 using System.Web.Mvc;
6 using System.Web.Script.Services;
7 using DotNetOpenAuth.Messaging;
8 using DotNetOpenAuth.OAuth2;
9 using IdefavAuthorizationServer.Code;
10
11 namespace IdefavAuthorizationServer.Controllers
12 {
13 public class OAuthController : Controller
14 {
15 private readonly AuthorizationServer authorizationServer =
16 new AuthorizationServer(new IdefavAuthorizationServerHost(Common.Configuration));
17
18 public async Task Token()
19 {
20 var response = await authorizationServer.HandleTokenRequestAsync(Request);
21 Response.ContentType = response.Content.Headers.ContentType.ToString();
22 return response.AsActionResult();
23 }
24 }
25 }
文章标题:DotNetOpenAuth实践之搭建验证服务器
文章链接:http://soscw.com/index.php/essay/42391.html