ServiceStack и Auth0
Я ищу использовать Auth0 в качестве поставщика аутентификации для ServiceStack. Существует отличный пример приложения, задокументированного на Auth0, который применяется и хорошо работает при работе с ServiceStack и использованием ServiceStack.Host.MVC: https://auth0.com/docs/quickstart/webapp/servicestack/01-login.
Однако я не знаю, как создать URL-адрес авторизации и перенаправить пользователя на этот URL-адрес в сценарии, в котором я НЕ использую MVC и AccountController для перенаправления пользователя. Как я могу создать URL перенаправления, используя плагин ServiceStack Auth, если я хочу повторить логику в соответствии с примером кода MVC ниже:
public class AccountController : Controller
{
public ActionResult Login()
{
string clientId = WebConfigurationManager.AppSettings["oauth.auth0.AppId"];
string domain = WebConfigurationManager.AppSettings["oauth.auth0.OAuthServerUrl"].Substring(8);
var redirectUri = new UriBuilder(this.Request.Url.Scheme, this.Request.Url.Host, this.Request.Url.IsDefaultPort ? -1 : this.Request.Url.Port, "api/auth/auth0");
var client = new AuthenticationApiClient(new Uri($"https://{domain}"));
var authorizeUrlBuilder = client.BuildAuthorizationUrl()
.WithClient(clientId)
.WithRedirectUrl(redirectUri.ToString())
.WithResponseType(AuthorizationResponseType.Code)
.WithScope("openid profile")
.WithAudience($"https://{domain}/userinfo");
return Redirect(authorizeUrlBuilder.Build().ToString());
}
}
1 ответ
Для всех, кто заинтересован, вот решение, которое я в итоге принял.
шаги:
1) Создайте плагин Auth0 (см. Суть здесь)
2) Зарегистрируйте плагин в вашем AppHost.
Plugins.Add(new AuthFeature(() => new Auth0UserSession(), new IAuthProvider[] {
new Auth0Provider(appSettings,appSettings.GetString("oauth.auth0.OAuthServerUrl"))
}));
3) Добавьте соответствующие ключи в ваш Web.Config.
<appSettings>
<add key="oauth.auth0.OAuthServerUrl" value="https://xxxxxxx.auth0.com" />
<add key="oauth.auth0.AppId" value="xxxxxx" />
<add key="oauth.auth0.AppSecret" value="xxxxxxx" />
</appSettings>