我正在为我的项目使用Identity Server3,我目前有一个网站和api受Id服务器保护,但工作正常,因为我将用户存储在Id服务器数据库中,我无法真正更改网站中的任何用户数据,例如更改个人资料图片或任何索赔值。
为了解决这个问题,我正在考虑在IdServer上创建一个API,这个API将管理用户、更改密码、检索用户或更改与用户相关的任何内容。我想在示例项目上创建这个API,其中我的IdServer使用Owin映射。
现在,我的idServer位于/identity路由中,如下所示
public class Startup
{
public void Configuration(IAppBuilder app)
{
Log.Logger = new LoggerConfiguration().MinimumLevel.Debug().WriteTo.Trace().CreateLogger();
app.Map("/identity", idserverApp =>
{
var efConfig = new EntityFrameworkServiceOptions
{
ConnectionString = "IdSvr3Config"
};
var options = new IdentityServerOptions
{
SiteName = "Identity server",
IssuerUri = ConfigurationManager.AppSettings["idserver:stsIssuerUri"],
PublicOrigin = ConfigurationManager.AppSettings["idserver:stsOrigen"],
SigningCertificate = Certificate.Get(),
Factory = Factory.Configure(efConfig),
AuthenticationOptions = AuthOptions.Configure(app),
CspOptions = new CspOptions { Enabled = false },
EnableWelcomePage=false
};
new TokenCleanup(efConfig, 3600 * 6).Start();
idserverApp.UseIdentityServer(options);
});
app.UseIdServerApi();
}
}
我的api“中间件”如下
**public static class IdServerApiExtensions
{
public static void UseIdServerApi(this IAppBuilder app, IdServerApiOptions options = null)
{
if (options == null)
options = new IdServerApiOptions();
if (options.RequireAuthentication)
{
var dic = app.Properties;
JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();
app.UseIdentityServerBearerTokenAuthentication(
new IdentityServerBearerTokenAuthenticationOptions
{
Authority = "https://localhost:44302/identity", //here is the problem, it says not found even though I already mapped idServer to /identity
RequiredScopes = new[]
{
"idserver-api"
},
ValidationMode=ValidationMode.ValidationEndpoint
});
}
var config = new HttpConfiguration();
WebApiConfig.Register(config,options.RequireAuthentication);
app.UseNinjectMiddleware(() => NinjectConfig.CreateKernel.Value);
app.UseNinjectWebApi(config);
app.Use<IdServerApiMiddleware>(options);
}
}**
我知道这是可能的,我只是不知道在同一个项目上使用这个api是否是一个好主意,而且我也不知道怎么做。
-
创建这个API来管理用户是个好主意吗?如果没有,我可以用什么?
-
如何创建适当的设置以在/API下启动API,同时使用IdServer保护此API?
使现代化
正在添加
,解决了我的问题,感谢Scott Brady
谢谢