У меня есть веб-клиент, который использует IdentityServer3 (IDS3) и мое собственное управление пользователями. В моем IDS3 я перенаправляю к Внешнему поставщику (microsoftonline.com) для аутентификации. Как только аутентификация прошла успешно, мне нужно перенаправить на клиентский (веб) URL.
Я могу выполнить аутентификацию и получить id_token. Как бы то ни было, я не уверен, как я могу перенаправить на запрошенный клиентом URL. внешнее перенаправление возвращается к IDS3 redirecturi, но не знаю, как заставить его перенаправить на клиент.
Поток должен быть клиент -> IDS3 -> внешний (Azure openid connect) -> IDS3 -> клиент
Мой код ниже в IDS3 startup.cs
public void Configuration(IAppBuilder app)
{
app.Map("/identity", identity =>
{
var idSvrFactory = Factory.Configure("IdServerDB");
idSvrFactory.ConfigureUserService("UserMgmtDB");
var options = new IdentityServerOptions
{
SiteName = "My Site",
SigningCertificate = Certificates.Get(),
Factory = idSvrFactory,
EnableWelcomePage = false,
RequireSsl = true,
AuthenticationOptions = new AuthenticationOptions
{
EnableSignOutPrompt = false,
EnablePostSignOutAutoRedirect = true,
PostSignOutAutoRedirectDelay = 0,
SignInMessageThreshold = 1,
// EnableLocalLogin = false,
IdentityProviders = ConfigureAzureIdentityProviders,
CookieOptions = new IdentityServer3.Core.Configuration.CookieOptions
{
SecureMode = CookieSecureMode.Always,
Path = "/",
AllowRememberMe = false,
IsPersistent = true,
},
},
};
identity.UseIdentityServer(options);
});
}
public static void ConfigureAzureIdentityProviders(IAppBuilder app, string signInAsType)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Cookies"
});
string clientId = "client id from azure"; // your client ID as configured in Azure
string redirectUri = "https://localhost:port/identity/"; // the reply URL as configured in Azure
string postLogoutRedirectUri = "https://localhost:port/identity/something";
OpenIdConnectAuthenticationOptions options = new OpenIdConnectAuthenticationOptions
{
AuthenticationType = "AzureAd",
Caption = "Sign in with Azure AD",
Scope = "openid",
ClientId = clientId,
Authority = "authority url",
PostLogoutRedirectUri = postLogoutRedirectUri,
RedirectUri = redirectUri,
AuthenticationMode = sec.AuthenticationMode.Active,
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false,
},
SignInAsAuthenticationType = signInAsType, //"Cookies",
//UseTokenLifetime=false,
}
};
app.UseOpenIdConnectAuthentication(options);
}
Мой IDS3 должен подключиться к системе управления пользователями и получить некоторые роли и bearer_token для моего клиента.
Благодарим Вас за помощь.
PS; Мы вносим изменения в существующий IDS3, Identity4 находится в планах на будущее. Спасибо, Навя.