私はOWIN/Katana経由でUmbracoが消費するOAuth認証サーバとして私の会社のウェブサイトを使って概念実証を試みています。すべてのOAuth配管はうまく機能しているようですが、Umbracoは外部IDをローカルIDに変換していません。 Umbracoのバックエンドにログインする代わりに、ユーザーはログインページに戻ります。 OAuthフローが完了した後の唯一の変更は、Umbracoが長い暗号化文字列を含むUMB_EXTLOGINクッキーを作成したことです。外部OAuth IDをUmbracoのローカルIDに変換するにはどうすればよいですか?
ローカルID(Umbracoバックエンドログインページのユーザー名とパスワード)を使用して直接ログインすると、UMB_UCONTEXT、UMB_UPDCHK、XSRF-TOKEN、XSRF-Vの4つのCookieが作成されます。私は、外部のアイデンティティーをローカルのものに変換するものがないと思っていますが、それが何であるか分かりません。
Startup.Auth.cs
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
app.ConfigureBackOfficeMyCompanyAuth(Properties.Settings.Default.ClientId, Properties.Settings.Default.ClientSecret);
}
}
UmbracoMyCompanyAuthExtensions.cs
public static class UmbracoMyCompanyAuthExtensions
{
public static void ConfigureBackOfficeMyCompanyAuth(this IAppBuilder app, string clientId, string clientSecret,
string caption = "My Company", string style = "btn-mycompany", string icon = "fa-rebel")
{
var options = new MyCompanyAuthenticationOptions
{
ClientId = clientId,
ClientSecret = clientSecret,
SignInAsAuthenticationType = Constants.Security.BackOfficeExternalAuthenticationType,
Provider = new MyCompanyAuthenticationProvider(),
CallbackPath = new PathString("/MyCompanySignIn")
};
options.ForUmbracoBackOffice(style, icon);
options.Caption = caption;
app.UseMyCompanyAuthentication(options);
}
}
MyCompanyAuthenticationExtension.cs
public static class MyCompanyAuthenticationExtensions
{
public static IAppBuilder UseMyCompanyAuthentication(this IAppBuilder app, MyCompanyAuthenticationOptions options)
{
if (app == null)
{
throw new ArgumentNullException("app");
}
if (options == null)
{
throw new ArgumentNullException("options");
}
app.Use(typeof(MyCompanyAuthenticationMiddleware), new object[] { app, options });
return app;
}
public static IAppBuilder UseMyCompanyAuthentication(this IAppBuilder app, string clientId, string clientSecret)
{
MyCompanyAuthenticationOptions options = new MyCompanyAuthenticationOptions
{
ClientId = clientId,
ClientSecret = clientSecret
};
return app.UseMyCompanyAuthentication(options);
}
}
私のカスタム実装AuthenticationHandler<T>.AuthenticateCoreAsync()
は、以下のクレームとプロパティを持つAuthenticationTicketを返します。
クレーム
- GIVENNAME =マイファーストネーム
- FamilyNameで=私の姓
- 名=私のフルネーム
- メール=メールアドレス
プロパティ
- .redirect =/umbraco/