Asp.net mvc 将MVC应用程序扩展到REST

Asp.net mvc 将MVC应用程序扩展到REST,asp.net-mvc,rest,Asp.net Mvc,Rest,我想我可能把这个问题的措辞弄错了。我目前拥有的是一个MVC Web应用程序(默认情况下)使用承载令牌。这一切都很好,但如果我想在Web应用程序之外与这些API中的任何一个进行通信,我希望使用REST客户端。但是,我找不到一种方法来生成一个承载令牌/调用Login方法并获取一个承载令牌,以便在后续请求中用作授权头 我希望的是: 发布/帐户/登录 返回:令牌 发布/产品/创建 令牌头 身体要求 回报:成功还是失败 所有这些都不会丢失网站的现有功能 谢谢你的帮助 端点/Token已经提供了在WebAP

我想我可能把这个问题的措辞弄错了。我目前拥有的是一个MVC Web应用程序(默认情况下)使用承载令牌。这一切都很好,但如果我想在Web应用程序之外与这些API中的任何一个进行通信,我希望使用REST客户端。但是,我找不到一种方法来生成一个承载令牌/调用Login方法并获取一个承载令牌,以便在后续请求中用作授权头

我希望的是:

发布/帐户/登录 返回:令牌

发布/产品/创建 令牌头 身体要求 回报:成功还是失败

所有这些都不会丢失网站的现有功能


谢谢你的帮助

端点
/Token
已经提供了在WebAPI方法上使用
[Authorize]
所需的所有功能。完成这项工作的一般过程如下所示:

public partial class Startup
{
    // Enable the application to use OAuthAuthorization. You can then secure your Web APIs
    static Startup()
    {
        PublicClientId = "web";

        OAuthOptions = new OAuthAuthorizationServerOptions
        {
            TokenEndpointPath = new PathString("/Token"),
            AuthorizeEndpointPath = new PathString("/Account/Authorize"),
            Provider = new ApplicationOAuthProvider(PublicClientId),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
            AllowInsecureHttp = true
        };
    }
  • 客户端向
    http://somesite.com/Token
    内容类型
    标题应包含
    x-www-form-urlencoded
    。有效负载正文应包括
    grant\u type=password&username=“username”&password=“password”
    grant\u type
    值表示我们提供密码以交换访问令牌

  • 服务器响应将是
    HTTP403
    HTTP200
    。在
    http200
    的情况下,响应主体将包括
    访问令牌
    令牌类型
    承载
    ),以及
    到期

  • 客户端选择性地存储该
    访问\u令牌
    ,以备将来访问,然后建立对受保护服务器资源的新请求,包括头
    授权
    ,该头将是
    承载访问\u令牌
    。此格式很重要,它必须以
    承载
    和空格开头,然后是
    访问\u令牌

  • 请注意,这并不考虑跨源请求(COR)或HTTPS的问题。无论何时发送用户名或密码,都应制定适当的安全措施,如步骤1所示

    默认情况下,在任何具有标识的新MVC5项目上都会配置此选项。您将发现一个类似于以下内容的启动类:

    public partial class Startup
    {
        // Enable the application to use OAuthAuthorization. You can then secure your Web APIs
        static Startup()
        {
            PublicClientId = "web";
    
            OAuthOptions = new OAuthAuthorizationServerOptions
            {
                TokenEndpointPath = new PathString("/Token"),
                AuthorizeEndpointPath = new PathString("/Account/Authorize"),
                Provider = new ApplicationOAuthProvider(PublicClientId),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
                AllowInsecureHttp = true
            };
        }
    
    TokenEndpointPath
    表示令牌请求的路径,
    AuthorizeEndpointPath
    表示使用外部登录(Facebook、Twitter、Google等)时使用的路径。有关默认模板的详细信息,请参见


    Taiseer Joudeh可在上找到此过程的更详细步骤以及用Angular.js编写的完整客户端应用程序。

    WebAPI处理令牌的方式与MVC相同;你到底有什么问题?客户端是否有问题,即如何处理从端点返回的承载令牌?没有,我想我不知道如何向现有方法发出请求。例如,当前存在的登录方法要求使用LoginModel并需要AntiForgeryToken。此方法执行重定向操作。