2

標準の構成ファイル設定を使用してカスタム ClaimsAuthorizationManager を動作させていますが、実装にビジネス層サービスを挿入したいのですが、それがわかりません。

<system.identityModel>
    <identityConfiguration>
        <claimsAuthorizationManager 
            type="Authentication.AuthorizationManager, Assembly" />
        <claimsAuthenticationManager 
            type="Authentication.ClaimsTransformer, Assembly" />
    </identityConfiguration>
<system.identityModel>

静的 FederatedAuthentication クラスを使用して手動で設定しようとしましたが、喜びはありませんでした。はClaimsAuthorizationModule常に null です。

FederatedAuthentication.ClaimsAuthorizationModule.ClaimsAuthorizationManager = DependencyConfig.Container.Resolve<ClaimsAuthorizationManager>();

モジュールがロードされていることを確認するために、この質問の回答を試しました...

FederatedAuthentication.WSFederationAuthenticationModule は実行時に null です

...しかし、それらは効果がありません。また、System.IdentityModel アセンブリと同じ名前のモジュールが既にアプリケーションに含まれているため、これらの情報が古いかどうかも疑問です。

Thinktecture IdentityModel を使用していますが、問題を解決する場所がどこにもありません。この問題はそれを示唆しているようですが、解決策はありません。https://github.com/thinktecture/Thinktecture.IdentityModel/issues/9

null ClaimsAuthorizationModule の問題を解決しました。回答が古かったため、System.IdentityModel.Services アセンブリからクレーム認証モジュールを使用する必要がありました。これで ClaimsAuthManager を挿入できますが、CheckAccess が呼び出されません。

4

2 に答える 2

2

処理できるイベントがあります - FederatedAuthentication.ServiceConfigurationCreated。これにより、要求承認マネージャーをプログラムで設定できます。

ここを参照してください: https://github.com/thinktecture/Thinktecture.AuthorizationServer/blob/master/source/WebHost/Global.asax.cs

于 2014-07-08T18:50:10.237 に答える