我最终找到了这篇文章,并按照它的示例代码创建了我们自己的 OAuth 授权服务器。有了它,我们可以使用在我们的 UI 站点和 OAuth 服务器之间共享的受信任客户端 ID 和机密代表用户请求用户令牌。
http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server
更新 1:在对功能和事物进行了更多工作之后,我偶然发现了创建令牌的原因。Owin 中有一个TicketDataFormat类可以完成所有的魔法。它在构造函数中接受一个参数,即IDataProtector。如果 Owin 资源服务器在其中间件选项中使用默认的 AccessTokenFormat( TicketDataFormat );连同默认的DataProtector,您可以在客户端复制令牌生成。顺便说一句,默认的DataProtector使用 MachineKey,所以你的两个信任站点必须在 web.config 中设置相同的 MachineKey。所有不受信任或部分受信任的站点都应使用上面链接中提到的标准 oAuth 流程。
var protector = app.CreateDataProtector(typeof(OAuthAuthorizationServerMiddleware).Namespace, "Access_Token", "v1");
var tdf = new TicketDataFormat(protector);
var ticket = new AuthenticationTicket(){ ... };
var accessToken = tdf.Protect(ticket);
更新 2:推荐的,也是唯一应该这样做的方法是使用 oAuth 与您的客户端一起使用隐式流,并设置正确的范围和响应类型。
IdentityServer3文档有很好的文档记录教程,可以让我们在很短的时间内启动并运行。特别是在入门:MVC 身份验证和 Web API教程中代表用户调用 API部分。