配置授权服务器端点

我们如何使用用户名和密码流在ASP.NET 5中使用持票令牌?对于我们的场景,我们希望让用户使用AJAX调用进行注册和登录,而无需使用外部登录。


为此,我们需要一个授权服务器端点。在以前的ASP.NET版本中,我们将执行以下操作,然后在ourdomain.com/TokenURL上登录。


// Configure the application for OAuth based flow

PublicClientId = "self";

OAuthOptions = new OAuthAuthorizationServerOptions

{

    TokenEndpointPath = new PathString("/Token"),

    Provider = new ApplicationOAuthProvider(PublicClientId),

    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14)

};

但是,在当前版本的ASP.NET中,上述操作无效。我们一直试图找出新的方法。例如,GitHub上的aspnet / identity示例配置了Facebook,Google和Twitter身份验证,但似乎没有配置非外部OAuth授权服务器端点,除非这样AddDefaultTokenProviders()做,在这种情况下我们想知道到底是什么URL提供者会。


研究

我们从阅读源代码中了解到,我们可以通过调用IAppBuilder.UseOAuthBearerAuthentication我们的Startup类来向HTTP管道添加“承载认证中间件” 。虽然我们仍然不确定如何设置其令牌端点,但这是一个良好的开端。这不起作用:


public void Configure(IApplicationBuilder app)

{  

    app.UseOAuthBearerAuthentication(options =>

    {

        options.MetadataAddress = "meta";

    });


    // if this isn't here, we just get a 404

    app.Run(async context =>

    {

        await context.Response.WriteAsync("Hello World.");

    });

}

要去ourdomain.com/meta我们刚刚收到我们的Hello World页面。


进一步的研究表明,我们也可以使用IAppBuilder.UseOAuthAuthentication扩展方法,并且它需要一个OAuthAuthenticationOptions参数。该参数具有TokenEndpoint属性。因此,虽然我们不确定我们在做什么,但我们尝试了这一点,当然这不起作用。


public void Configure(IApplicationBuilder app)

{

    app.UseOAuthAuthentication("What is this?", options =>

    {

        options.TokenEndpoint = "/token";

        options.AuthorizationEndpoint = "/oauth";

        options.ClientId = "What is this?";

        options.ClientSecret = "What is this?";

        options.SignInScheme = "What is this?";

        options.AutomaticAuthentication = true;

    });


    // if this isn't here, we just get a 404

    app.Run(async context =>

    {

        await context.Response.WriteAsync("Hello World.");

    });

}

换句话说,在去ourdomain.com/token,没有错误,只有我们的问候世界页面。


拉莫斯之舞
浏览 636回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP