Rob*_*bin 124 asp.net oauth-2.0 asp.net-mvc-5 asp.net-web-api2
首先,我将描绘我的项目:
对于我的实习船,我需要为现有系统添加功能.一旦用户通过oauth2授权,第三方客户端必须能够访问AX Web服务中的数据.我知道我需要建立一个"代理Web服务",客户端可以在其中进行调用并调用AX服务,但我对oauth2部分有点不确定.大多数教程和指南都是关于在Facebook或谷歌登录中使用ASP.NET的标识.我不需要,我需要使用现有的凭据,所以我需要自己创建oauth2服务.
我发现很难找到关于此的教程,指南或解释.我理解oauth2以及需要做什么,但我以前从未做过这样的事情并且发现它很难开始.我发现的最接近我需要的是这个github repo链接,但解决方案没有构建.
我想到的是建立一个ASP.NET MVC网站,客户(第三方)可以自己注册并获取他们的客户ID.使用ASP.NET API,我想创建获取所需令牌和参数的API,然后访问Dyn AX服务.
这是正确的还是我完全错了?有关构建您自己的oauth2服务器/服务的任何帮助或链接都会很好.
Mic*_*elS 186
Taiseer Joudeh有一篇精彩的博客文章,详细的逐步描述.
Kai*_*ann 83
我也在努力寻找关于如何生成令牌部分的文章.我从来没有找到一个并写下自己的.所以,如果它有帮助:
要做的事情是:
Microsoft.OwinMicrosoft.Owin.Host.SystemWebMicrosoft.Owin.Security.OAuthMicrosoft.AspNet.Identity.Owinstartup类然后index.js使用以下内容创建HTML和JavaScript()文件:
var loginData = 'grant_type=password&username=test.test@mail.com&password=test123';
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
alert(xmlhttp.responseText);
}
}
xmlhttp.open("POST", "/token", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(loginData);
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript" src="index.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
OWIN startup类应具有以下内容:
using System;
using System.Security.Claims;
using Microsoft.Owin;
using Microsoft.Owin.Security.OAuth;
using OAuth20;
using Owin;
[assembly: OwinStartup(typeof(Startup))]
namespace OAuth20
{
public class Startup
{
public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }
public void Configuration(IAppBuilder app)
{
OAuthOptions = new OAuthAuthorizationServerOptions()
{
TokenEndpointPath = new PathString("/token"),
Provider = new OAuthAuthorizationServerProvider()
{
OnValidateClientAuthentication = async (context) =>
{
context.Validated();
},
OnGrantResourceOwnerCredentials = async (context) =>
{
if (context.UserName == "test.test@mail.com" && context.Password == "test123")
{
ClaimsIdentity oAuthIdentity = new ClaimsIdentity(context.Options.AuthenticationType);
context.Validated(oAuthIdentity);
}
}
},
AllowInsecureHttp = true,
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1)
};
app.UseOAuthBearerTokens(OAuthOptions);
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行您的项目.令牌应显示在弹出窗口中.
我正在研究同样的事情,并偶然发现了在ASP.NET 之上实现 OAuth 和 OpenID 的身份服务器。它与ASP.NET 身份和成员身份重新启动以及对实体框架的持久性支持集成。
因此,要回答您的问题,请查看他们关于如何设置 OAuth 和 OpenID 服务器的详细文档。
| 归档时间: |
|
| 查看次数: |
147046 次 |
| 最近记录: |