На самом деле у меня есть веб-приложение asp.net, которое может доставлять токен пользователю следующим образом:
- пользователь входит в приложение, переходит на определенную страницу и получает клиентскую информацию и секрет клиента.
- затем он вызывает следующий api ".... api / token", передавая clientid и clientsecret (тип предоставления учетных данных клиента) для получения токена.
Это связанный код:
using Microsoft.Owin;
using Owin;
using System;
using Microsoft.Owin.Security.OAuth;
[assembly: OwinStartup(typeof(MyApp.Web.App_Start.OwinStartup))]
namespace MyApp.Web.App_Start
{
public class OwinStartup
{
public void Configuration(IAppBuilder app)
{
OwinWebApiStartup.Configuration(app);
}
}
}
public static class OwinWebApiStartup
{
public static void Configuration(IAppBuilder app)
{
var provider = //my provider implementation;
var oauthServerOptions = new OAuthAuthorizationServerOptions
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/api/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(20),
Provider = provider,
};
app.UseOAuthAuthorizationServer(oauthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()
{
AccessTokenProvider = //my provider implementation,
});
}
}
Это хорошо работает. Но я хотел бы добавить новую функцию, когда клиентский код javascript, а не пользователь, хотел бы вызывать мой apis, и поэтому он должен иметь токен, но не иметь клиентские и клиентские секреты.
Это моя идея:
Создайте новую конечную точку API, (только эта будет доступна моему клиентскому коду javascript без токена, и там этот код сгенерирует токен (благодаря имени пользователя текущего подключенного пользователя) и вернет этот (что будут
быть тем же, что пользователь мог получить с помощью существующего метода) для использования клиентским кодом javascript