Skip to content

Commit

Permalink
Fix Basic authentication header
Browse files Browse the repository at this point in the history
Issue: #9544

The header must include the word "Basic", but the word is missing.

#minor-release

PiperOrigin-RevId: 443386880
  • Loading branch information
claincly authored and icbaker committed Apr 26, 2022
1 parent 3867f8e commit 084dfc0
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,14 @@
/** HTTP digest authentication (RFC2069). */
public static final int DIGEST = 2;

private static final String DIGEST_FORMAT =
/** Basic authorization header format, see RFC7617. */
private static final String BASIC_AUTHORIZATION_HEADER_FORMAT = "Basic %s";

/** Digest authorization header format, see RFC7616. */
private static final String DIGEST_AUTHORIZATION_HEADER_FORMAT =
"Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\"";
private static final String DIGEST_FORMAT_WITH_OPAQUE =

private static final String DIGEST_AUTHORIZATION_HEADER_FORMAT_WITH_OPAQUE =
"Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\","
+ " opaque=\"%s\"";

Expand Down Expand Up @@ -107,9 +112,11 @@ public String getAuthorizationHeaderValue(
}

private String getBasicAuthorizationHeaderValue(RtspAuthUserInfo authUserInfo) {
return Base64.encodeToString(
RtspMessageUtil.getStringBytes(authUserInfo.username + ":" + authUserInfo.password),
Base64.DEFAULT);
return Util.formatInvariant(
BASIC_AUTHORIZATION_HEADER_FORMAT,
Base64.encodeToString(
RtspMessageUtil.getStringBytes(authUserInfo.username + ":" + authUserInfo.password),
Base64.DEFAULT));
}

private String getDigestAuthorizationHeaderValue(
Expand Down Expand Up @@ -137,10 +144,16 @@ private String getDigestAuthorizationHeaderValue(

if (opaque.isEmpty()) {
return Util.formatInvariant(
DIGEST_FORMAT, authUserInfo.username, realm, nonce, uri, response);
DIGEST_AUTHORIZATION_HEADER_FORMAT, authUserInfo.username, realm, nonce, uri, response);
} else {
return Util.formatInvariant(
DIGEST_FORMAT_WITH_OPAQUE, authUserInfo.username, realm, nonce, uri, response, opaque);
DIGEST_AUTHORIZATION_HEADER_FORMAT_WITH_OPAQUE,
authUserInfo.username,
realm,
nonce,
uri,
response,
opaque);
}
} catch (NoSuchAlgorithmException e) {
throw ParserException.createForManifestWithUnsupportedFeature(/* message= */ null, e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public void getAuthorizationHeaderValue_withBasicAuthenticationMechanism_getsCor
String authenticationRealm = "WallyWorld";
String username = "Aladdin";
String password = "open sesame";
String expectedAuthorizationHeaderValue = "QWxhZGRpbjpvcGVuIHNlc2FtZQ==\n";
String expectedAuthorizationHeaderValue = "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\n";
RtspAuthenticationInfo authenticator =
new RtspAuthenticationInfo(
RtspAuthenticationInfo.BASIC, authenticationRealm, /* nonce= */ "", /* opaque= */ "");
Expand Down

0 comments on commit 084dfc0

Please sign in to comment.