How to configure runtime ClientId & ClientSecret based on requested API in...












0















We have configured IdentityServer4 host using .Net core library and all APIs are developed using .Net full framework.



We do have requirement to support audit logging feature for each request and decide whether requested API can be accessed by client or not.



IdentityServer3.AccessTokenValidation library needs ClientId & ClientSecret which is nothing but APIResourceName & APIResourceSecret or WebRequestHandler to fire Introspection events.



But the problem here is, we do have multiple APIs like Patient,Employee,Customer etc.



How to pass ClientId & ClientSecret dynamically based on requested resource/API from a client?



Note :



With this configuration, it fires TokenIntrospectionSuccess & TokenIntrospectionFailure events. We have do have event subscriber which listen to this events and based on available infomration, we can log that requested resource access by client was successful or not.



If this information is not sufficient then please let me know.



app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions()
{
Authority = "http://localhost:5000/",
ClientId = "PatientAPI",
ClientSecret = "secretvalue",
ValidationMode = ValidationMode.ValidationEndpoint,
});









share|improve this question























  • You don’t need client id or secret. Properties are there for when you use open id flows (like implicit flow) and your web app is client itself. I assume the clients you refer to are using client credentials flow?

    – Vidmantas Blazevicius
    Dec 30 '18 at 0:28
















0















We have configured IdentityServer4 host using .Net core library and all APIs are developed using .Net full framework.



We do have requirement to support audit logging feature for each request and decide whether requested API can be accessed by client or not.



IdentityServer3.AccessTokenValidation library needs ClientId & ClientSecret which is nothing but APIResourceName & APIResourceSecret or WebRequestHandler to fire Introspection events.



But the problem here is, we do have multiple APIs like Patient,Employee,Customer etc.



How to pass ClientId & ClientSecret dynamically based on requested resource/API from a client?



Note :



With this configuration, it fires TokenIntrospectionSuccess & TokenIntrospectionFailure events. We have do have event subscriber which listen to this events and based on available infomration, we can log that requested resource access by client was successful or not.



If this information is not sufficient then please let me know.



app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions()
{
Authority = "http://localhost:5000/",
ClientId = "PatientAPI",
ClientSecret = "secretvalue",
ValidationMode = ValidationMode.ValidationEndpoint,
});









share|improve this question























  • You don’t need client id or secret. Properties are there for when you use open id flows (like implicit flow) and your web app is client itself. I assume the clients you refer to are using client credentials flow?

    – Vidmantas Blazevicius
    Dec 30 '18 at 0:28














0












0








0








We have configured IdentityServer4 host using .Net core library and all APIs are developed using .Net full framework.



We do have requirement to support audit logging feature for each request and decide whether requested API can be accessed by client or not.



IdentityServer3.AccessTokenValidation library needs ClientId & ClientSecret which is nothing but APIResourceName & APIResourceSecret or WebRequestHandler to fire Introspection events.



But the problem here is, we do have multiple APIs like Patient,Employee,Customer etc.



How to pass ClientId & ClientSecret dynamically based on requested resource/API from a client?



Note :



With this configuration, it fires TokenIntrospectionSuccess & TokenIntrospectionFailure events. We have do have event subscriber which listen to this events and based on available infomration, we can log that requested resource access by client was successful or not.



If this information is not sufficient then please let me know.



app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions()
{
Authority = "http://localhost:5000/",
ClientId = "PatientAPI",
ClientSecret = "secretvalue",
ValidationMode = ValidationMode.ValidationEndpoint,
});









share|improve this question














We have configured IdentityServer4 host using .Net core library and all APIs are developed using .Net full framework.



We do have requirement to support audit logging feature for each request and decide whether requested API can be accessed by client or not.



IdentityServer3.AccessTokenValidation library needs ClientId & ClientSecret which is nothing but APIResourceName & APIResourceSecret or WebRequestHandler to fire Introspection events.



But the problem here is, we do have multiple APIs like Patient,Employee,Customer etc.



How to pass ClientId & ClientSecret dynamically based on requested resource/API from a client?



Note :



With this configuration, it fires TokenIntrospectionSuccess & TokenIntrospectionFailure events. We have do have event subscriber which listen to this events and based on available infomration, we can log that requested resource access by client was successful or not.



If this information is not sufficient then please let me know.



app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions()
{
Authority = "http://localhost:5000/",
ClientId = "PatientAPI",
ClientSecret = "secretvalue",
ValidationMode = ValidationMode.ValidationEndpoint,
});






c# identityserver4 identityserver3






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Dec 29 '18 at 16:07









Pariv ShahPariv Shah

1




1













  • You don’t need client id or secret. Properties are there for when you use open id flows (like implicit flow) and your web app is client itself. I assume the clients you refer to are using client credentials flow?

    – Vidmantas Blazevicius
    Dec 30 '18 at 0:28



















  • You don’t need client id or secret. Properties are there for when you use open id flows (like implicit flow) and your web app is client itself. I assume the clients you refer to are using client credentials flow?

    – Vidmantas Blazevicius
    Dec 30 '18 at 0:28

















You don’t need client id or secret. Properties are there for when you use open id flows (like implicit flow) and your web app is client itself. I assume the clients you refer to are using client credentials flow?

– Vidmantas Blazevicius
Dec 30 '18 at 0:28





You don’t need client id or secret. Properties are there for when you use open id flows (like implicit flow) and your web app is client itself. I assume the clients you refer to are using client credentials flow?

– Vidmantas Blazevicius
Dec 30 '18 at 0:28












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53971146%2fhow-to-configure-runtime-clientid-clientsecret-based-on-requested-api-in-ident%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53971146%2fhow-to-configure-runtime-clientid-clientsecret-based-on-requested-api-in-ident%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Monofisismo

Angular Downloading a file using contenturl with Basic Authentication

Olmecas