-
Notifications
You must be signed in to change notification settings - Fork 202
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SubjectName/Issuer (SNI) authentication #60
Comments
Hi @rayluo, are there some more comprehensive public documents about how SubjectName/Issuer (SNI) authentication works with
The description provided in this issue still seems to be very vague to developers and users, and the internal Wiki page is not visible to external users. Thanks for the information in advance. |
We started with that same internal wiki page that you've found. In case you haven't noticed, its first paragraph also links to this yet another internal wiki page on "Subject Name and Issuer Authentication - Advanced Administrator Guidance".
As long as your app utilizes MSAL, you shouldn't need to care about all those on-the-wire details. For example, this is the MSAL Python API surface for SNI feature, which is part of the public MSAL Python API reference. Please ping us if you have further question! |
Thanks @rayluo for the great explanation.
Azure CLI has received customers' complaint that the document for
It will nice if we can have public doc about the on-the-wire details so that customer can also use tools like Postman, Fiddler to troubleshoot and develop their own client-side tool which utilize SubjectName/Issuer (SNI) authentication. |
The internal wiki link has fallen over and can't get up :) Any chance of a new link? |
That link still brings me to a wiki page, even though it might not be the same page as before, but you can always use its Search feature with the "sni" keyword. |
Background of SNI: How does it work?
The following description is derived from Matt Bearup, a software developer from Microsoft.
az login --newoption /path/tocert
. MSAL needs to help enable this.PS: This is an internal wiki page that our service team always references to.
How does it need to be implemented in MSAL?
What the “x5c” JWT header value would be? It appears only public certificate is sufficient. MSAL do NOT need to, and MUST NOT send private cerficate.
Sagar: Correct, the x5c is the public cert.
With “x5c” available, why “x5t” is still required, since it can be generated from “x5c” through sha1 hash easily?
Sagar: This is due to the way JWT header is validated in eSTS for an incoming client assertion. eSTS parses the JWT header and extracts the x5t, does not generate it.
The "x5c" parameter means "X.509 Certificate Chain", which is represented as a JSON array of certificate value strings. See this example too. Historically AAD would also accept a single cert as a string. MSAL Python would NOT rely on such behavior, and would follow the specs and send it as an array. During the implementation, please test it on the wire, and then also come up with a test case to ensure such behavior.
As a reference, this was the same feature we added in ADAL Python, but it was sending public cert as a string (rather than an array).
UPDATE: ADAL Python 1.2.2+ will also send public cert as a list of string now.
We would also like to include the usability enhancement mentioned in this ADAL Python issue, and then also back port such enhancement to ADAL Python.
The text was updated successfully, but these errors were encountered: