Open pedrosdf opened 6 months ago
Feature request to java-storage. @BenWhitehead Do you mind taking a look?
The code in google-cloud-storage to sign urls depends upon the value provided in com.google.cloud.storage.Storage.SignUrlOption#signWith
, if that is not provided then it will attempt to fallback and use the instance of credentials provided at client creation time. The library specifically invokes com.google.auth.ServiceAccountSigner#sign(byte[])
here.
In this case it sounds like the type of credentials provided doesn't know how to sign.
I think this is actually an issue that would need to be addressed in google-auth-library, rather than the storage library code itself.
@timursadykov Do you know if there is anything already on the roadmap to implement the sign method for credentials that work with workload identity?
ack, I'll chat with the team that owns WIF
Thanks for stopping by to let us know something could be better!
PLEASE READ: If you have a support contract with Google, please create an issue in the support console instead of filing on GitHub. This will ensure a timely response.
Is your feature request related to a problem? Please describe. [Storage] We are opening this Feature Request as we want to be able to easily generate signed URLs when using workload identity. We understand that this is a known missing feature and it is being worked on through other GitHub feature requests for .net [1] and ruby [2], but we want this functionality to also be available for java.
Describe the solution you'd like We found a recent Google Cloud Collective response in a Stack Overflow issue [3] explaining the following: “External account credentials (Workload ID) are not supported as URL signers and you need to use the IAM service to sign the blob yourself. External account credentials are not currently supported for URL signing because it's not always possible to know client side which service account the credential maps back to, and that's a requirement (we would be calling the IAM service internally for this).” We know this is already being worked on and there are some workarounds for .net [1] and ruby [2], therefore, we want to have a resolution/workaround on the Java side as well.
Describe alternatives you've considered Tried using this example [4] by adapting it to Java, but started receiving the following exception:
This is the code being used:
Additional context [1] https://github.com/googleapis/google-api-dotnet-client/issues/2410 [2] https://github.com/googleapis/google-cloud-ruby/issues/13307 [3] https://stackoverflow.com/a/76266912 [4] https://gist.github.com/jezhumble/91051485db4462add82045ef9ac2a0ec