public void TestIsSupportedHttpChallenge() { var prov = ChallengeHandlerExtManager.GetProvider("manual"); Assert.IsNotNull(prov); Assert.IsTrue(prov.IsSupported(HTTP_CHALLENGE)); }
public AuthorizeChallenge HandleChallenge(AuthorizationState authzState, string challengeType, string handlerName, IReadOnlyDictionary <string, object> handlerParams, bool cleanUp = false) { var provider = ChallengeHandlerExtManager.GetProvider(handlerName); if (provider == null) { throw new InvalidOperationException("unable to resolve Challenge Handler provider") .With("handlerName", handlerName); } var authzChallenge = authzState.Challenges.FirstOrDefault(x => x.Type == challengeType); if (authzChallenge == null) { throw new ArgumentOutOfRangeException(nameof(challengeType), "no challenge found matching requested type") .With("challengeType", challengeType); } if (!provider.IsSupported(authzChallenge.Challenge)) { throw new InvalidOperationException("Challenge Handler does not support given Challenge") .With("handlerName", handlerName) .With("challengeType", authzChallenge.Challenge.Type); } var handler = provider.GetHandler(authzChallenge.Challenge, handlerParams); if (handler == null) { throw new InvalidOperationException("no Challenge Handler provided for given Challenge") .With("handlerName", handlerName) .With("challengeType", authzChallenge.Challenge.Type); } authzChallenge.HandlerName = handlerName; if (cleanUp) { handler.CleanUp(authzChallenge.Challenge); authzChallenge.HandlerCleanUpDate = DateTime.Now; } else { handler.Handle(authzChallenge.Challenge); authzChallenge.HandlerHandleDate = DateTime.Now; } handler.Dispose(); return(authzChallenge); }
public void TestHandlerDisposal() { var prov = ChallengeHandlerExtManager.GetProvider("manual"); Assert.IsNotNull(prov); var h = prov.GetHandler(DNS_CHALLENGE, null); Assert.IsFalse(h.IsDisposed); h.Dispose(); Assert.IsTrue(h.IsDisposed); h.Handle(DNS_CHALLENGE); }
public void TestCleanUpHttpChallenge() { var prov = ChallengeHandlerExtManager.GetProvider("manual"); Assert.IsNotNull(prov); var h = prov.GetHandler(HTTP_CHALLENGE, new Dictionary <string, object> { { "WriteOutPath", "DBG" } }); h.CleanUp(HTTP_CHALLENGE); h.Dispose(); }
public void TestHandleDnsChallenge() { var prov = ChallengeHandlerExtManager.GetProvider("manual"); Assert.IsNotNull(prov); var h = prov.GetHandler(DNS_CHALLENGE, new Dictionary <string, object> { { "WriteOutPath", "DBG" } }); h.Handle(new ChallengeHandlingContext(DNS_CHALLENGE)); h.Dispose(); }
public void TestProviderParams() { var prov = ChallengeHandlerExtManager.GetProvider("manual"); Assert.IsNotNull(prov); var paramsEnum = prov.DescribeParameters(); Assert.IsNotNull(paramsEnum); var paramsArr = paramsEnum.ToArray(); Assert.IsTrue(paramsArr.Length > 0); }
protected override void ProcessRecord() { // We have to invoke this here because we *may not* invoke // any Vault access but we do rely on Ext mechanism access. Util.PoshHelper.BeforeExtAccess(); if (ReloadProviders) { ChallengeDecoderExtManager.Reload(); ChallengeHandlerExtManager.Reload(); } else if (!string.IsNullOrEmpty(GetChallengeType)) { WriteVerbose("Getting details of Challenge Type Decoder"); var tInfo = ChallengeDecoderExtManager.GetProviderInfo(GetChallengeType); var t = ChallengeDecoderExtManager.GetProvider(GetChallengeType); WriteObject(new { ChallengeType = tInfo.Type, tInfo.Label, tInfo.SupportedType, tInfo.Description, }); } else if (ListChallengeTypes) { WriteVerbose("Listing all Challenge Type Decoders"); WriteObject(ChallengeDecoderExtManager.GetProviderInfos().Select(_ => _.Name), true); } else if (!string.IsNullOrEmpty(GetChallengeHandler)) { WriteVerbose("Getting details of Challenge Type Handler"); var pInfo = ChallengeHandlerExtManager.GetProviderInfo(GetChallengeHandler); var p = ChallengeHandlerExtManager.GetProvider(GetChallengeHandler); if (ParametersOnly) { WriteVerbose("Showing parameter details only"); WriteObject(p.DescribeParameters().Select(_ => new { _.Name, _.Label, _.Type, _.IsRequired, _.IsMultiValued, _.Description, }), true); } else { WriteObject(new { pInfo.Name, pInfo.Label, pInfo.SupportedTypes, pInfo.Description, Parameters = p.DescribeParameters().Select(_ => new { _.Name, _.Label, _.Type, _.IsRequired, _.IsMultiValued, _.Description, }), }); } } else if (ListChallengeHandlers) { WriteVerbose("Listing all Challenge Type Handlers"); WriteObject(ChallengeHandlerExtManager.GetProviderInfos().Select(_ => _.Name), true); } else { WriteVerbose("Getting details of preconfigured Challenge Handler Profile"); using (var vlt = Util.VaultHelper.GetVault(VaultProfile)) { vlt.OpenStorage(); var v = vlt.LoadVault(); if (ListProfiles) { WriteObject(v.ProviderProfiles?.Values, true); } else { var ppi = v.ProviderProfiles?.GetByRef(ProfileRef, throwOnMissing: false); if (ppi == null) { WriteObject(ppi); } else { var asset = vlt.GetAsset(Vault.VaultAssetType.ProviderConfigInfo, ppi.Id.ToString()); using (var s = vlt.LoadAsset(asset)) { WriteObject(JsonHelper.Load <ProviderProfile>(s), false); } } } } } }